I can't use *
in assembly version; when I do I get the following compilation error:
The specified version string contains wildcards, which are not compatible with determinism. Either remove wildcards from the version string, or disable determinism for this compilation
AssemblyVersion: Specifies the version of the assembly being attributed. AssemblyFileVersion: Instructs a compiler to use a specific version number for the Win32 file version resource.
You can either remove '*' from your version string, or disable determinism in your project file by setting the MSBuild property `<Deterministic>false</Deterministic>`.
Add <Deterministic>
tag with false
value and use *
for the 3'rd part of AssemblyVersion
inside <PropertyGroup>
in .csproj file:
<PropertyGroup> <ProduceReferenceAssembly>true</ProduceReferenceAssembly> <Version>1.0.0</Version> <AssemblyVersion>1.0.*</AssemblyVersion> <Deterministic>false</Deterministic> </PropertyGroup>
"Deterministic" means something like - the compiler will use the same versions of the files if no changes have happened resulting in faster builds.
It is the AssemblyVersion
(not AssemblyFileVersion
) that you should use a wildcard in. If you provide AssemblyVersion
with wildcard, just don't include AssemblyFileVersion
at all.
Note also: There are two forms. One where the asterisk wildcard is in the third position (x.y.*
) and one where it is in the fourth position (x.y.z.*
).
x.y.*
auto-generates the BUILD and REVISION numbers. BUILD is the "number of days since 1st January 2000" thus it only changes once each day. and REVISION is "half the number of seconds since 00:00".
Today, for example, an AssemblyVersion
of '1.0.*'
will generate a specific '7472'
, e.g. '1.0.7472.20737'
. The 5-digit final number will be different every build, at least if changes.
This may be better than 1.0.0.*
for support as it indicates age (.7300
would be almost 6 months old). The example, 1.0.7472.20737
, means "this assembly was built on 2020-06-16 at 11:31:14".
I guess you were able to use it earlier and can't anymore.
Reason - There have been some changes to Visual Studio as the new project files now default to 'True' for 'Deterministic' attribute.
Solution - as Hans Passant says, edit project file by hand. Cons to doing it, also as he says.
Specifically, edit .csproj
to <Deterministic>false</Deterministic>
.
Source - https://marinovdh.wordpress.com/2018/10/22/68/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With