复制AssemblyVersion属性

Aam*_*mir 108 c# compiler-errors

我有一个项目在编译时生成以下错误:

错误CS0579:复制'AssemblyVersion'属性

我检查了文件AssemblyInfo.cs,看起来没有重复.

在MSDN上发现这篇文章解决了类似的问题,并且遵循本文中的建议也解决了这个问题.

谁能告诉我这里发生了什么?是否只有两个或更多项目的类名相似的情况下才会发生?或者是别的什么?

Ser*_*nov 137

Visual Studio 2017开始,另一个继续使用该AssemblyInfo.cs文件的解决方案是关闭自动装配信息生成,如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

我个人觉得它对需要同时支持.NET Framework和.NET Standard的项目非常有用.

  • 那么为什么这不是默认值呢?需要GenerateAssemblyInfo 做什么?我刚刚通过将其设置为 false 破坏了什么? (4认同)
  • 是的,这对我有用,删除obj和bin文件夹是不够的. (2认同)
  • 将其移动到Directory.Build.props文件中 (2认同)
  • 此解决方案是否存在任何风险或负面结果? (2认同)

luq*_*uqi 98

由于我过去也遇到过这个问题,所以我假设您的构建过程还单独提供程序集信息以提供版本控制.这会导致重复,因为您的项目在AssembleyInfo.cs文件中也有该信息.所以删除文件,我认为它应该工作.

  • 那么,不应该构建进程覆盖现有的AssemblyVersion而不是创建新条目吗?我知道我们的构建过程就是这样,但我很好奇为什么它不会覆盖现有的.它实施得不好还是限制? (2认同)

Pan*_*oti 15

我有同样的错误并且是大会Vesrion和汇编文件版本的基础所以阅读Luqi回答我刚刚添加它们作为评论并且错误已经解决

// AssemblyVersion is the CLR version. Change this only when making breaking    changes
//[assembly: AssemblyVersion("3.1.*")]
// AssemblyFileVersion should ideally be changed with each build, and should help identify the origin of a build
//[assembly: AssemblyFileVersion("3.1.0.0")]
Run Code Online (Sandbox Code Playgroud)


her*_*ger 15

就我而言,项目中的子文件夹本身就是项目文件夹:

  • 文件系统:

    • c:\projects\webapi\wepapi.csproj
    • c:\projects\webapi\tests\wepapitests.csproj
  • 解决方案

    • webapi(文件夹和项目)
      • 测试(文件夹)
    • 测试(文件夹和项目)

然后我不得不从“webapi”项目中删除子文件夹“tests”。

  • 右键单击“解决方案资源管理器”中的文件夹,然后选择“从项目中排除”。这样您就不必重组文件夹。 (3认同)

MiF*_*vil 11

将旧项目转换为.NET Core时,现在可以在项目本身上设置AssemblyInfo.cs中的大部分信息.打开项目属性,然后选择"包"选项卡以查看新设置.

埃里克L. Anderson的文章"复制'System.Reflection.AssemblyCompanyAttribute’属性" 描述了3个选项:


Nat*_*ini 9

在我的例子中,编译过程中生成的一些临时*.cs文件被意外添加到项目中.

这些文件来自obj\Debug目录,因此它们绝对不应该添加到解决方案中.一个*.cs通配符去有点疯狂,并加入他们不正确.

删除这些文件解决了问题.


小智 7

这里的项目中必须已经有一个 AssemblyInfo.cs 文件: 在此处输入图片说明

解决方法: - 删除任何一个AssemblyInfo.cs


Dwa*_*ove 6

发生错误是因为不知何故,在我的控制器文件夹中创建了一个 obj 文件夹。只需在应用程序中搜索 Assemblyinfo.cs 中的一行即可。某处可能有重复的地方。


Ale*_*zis 6

我在尝试添加 GitVersion 工具以更新我在 AssemblyInfo.cs 中的版本时遇到了同样的问题。使用 VS2017 和 .NET Core 项目。所以我只是混合了两个世界。我的 AssemblyInfo.cs 只包含 GitVersion 工具生成的版本信息,我的 csproj 包含剩余的东西。请注意我不使用<GenerateAssemblyInfo>false</GenerateAssemblyInfo>我只使用与版本相关的属性(见下文)。更多详细信息请参见AssemblyInfo 属性

装配信息.cs

[assembly: AssemblyVersion("0.2.1.0")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+13.Branch.master.Sha.119c35af0f529e92e0f75a5e6d8373912d457818")]
Run Code Online (Sandbox Code Playgroud)

my.csproj包含所有与其他程序集属性相关的内容:

<PropertyGroup>
   ...
  <Company>SOME Company </Company>
  <Authors>Some Authors</Authors>
  <Product>SOME Product</Product>
   ...
  <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
  <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
  <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

csproj 映射到项目属性中的包选项卡