视觉工作室。具有*的AssemblyVersion不起作用

Luc*_*per 12 c# version

我不能在汇编版本中使用*

将文本表示为UTF-16代码单元的序列。要浏览此类型的.NET Framework源代码,请参见参考源。

指定的版本字符串包含通配符,该通配符与确定性不兼容。从版本字符串中删除通配符,或禁用此编译的确定性

SCRA组件

Ani*_*eek 16

我想您能够更早地使用它,并且不再使用。

原因-Visual Studio进行了一些更改,因为新的项目文件现在对于“确定性”属性默认为“真”。

解决方案-就像Hans Passant所说的那样,手动编辑项目文件。正如他所说,这样做也是不利的。

来源-https: //marinovdh.wordpress.com/2018/10/22/68/

  • Tldr; 将* .csproj *编辑为`<Deterministic> false </ Deterministic>`。谢谢。 (7认同)

Joh*_*eer 12

* .csproj文件中添加<Deterministic>带有false值的标签:<PropertyGroup>

<PropertyGroup>
    <ProduceReferenceAssembly>true</ProduceReferenceAssembly>
    <Version>1.0.0</Version>
    <AssemblyVersion>1.0.0.*</AssemblyVersion>
    <Deterministic>false</Deterministic>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • 对于那些也想知道的人来说,回答我自己的问题 - 确定性意味着类似 - 如果没有发生任何更改,编译器将使用相同版本的文件,从而加快构建/测试速度。如果它最初被禁用并且您想在版本号中使用通配符,那么更改它会产生什么不利影响?基本上什么都没有。它只是让这成为可能。https://blog.paranoidcoding.com/2016/04/05/deterministic-builds-in-roslyn.html (12认同)
  • 对于那些想要使用通配符自动生成版本信息的人来说,这实际上是一个更直接的答案。请注意,您应该在其中使用通配符的是 AssemblyVersion(而不是 AssemblyFileVersion)。如果您为 AssemblyVersion 提供通配符,则根本不包含 AssemblyFileVersion 即可。(我使用 Properties\AssemblyInfo.cs 文件,并在项目设置中将其留空,但看起来上面也支持它。) (4认同)
  • 但是 ```&lt;Deterministic&gt;``` 标签有什么作用呢? (2认同)