复制AssemblyVersion属性

时间:2012-04-25 07:39:19

标签: c# compiler-errors

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

  

错误CS0579:复制'AssemblyVersion'属性

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

我发现this article on MSDN解决了类似的问题,并且遵循本文中的建议也解决了问题。

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

25 个答案:

答案 0 :(得分:95)

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

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

我个人认为它对于需要同时支持.NET Framework和.NET Standard的项目非常有用。

答案 1 :(得分:81)

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

答案 2 :(得分:13)

我有同样的错误,并且是大会版本和汇编文件版本的基础,因此阅读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")]

答案 3 :(得分:8)

就我而言,编译过程中生成的一些临时* .cs文件被意外添加到项目中。

这些文件来自obj\Debug目录,所以它们肯定不应该添加到解决方案中。 *.cs通配符有点疯狂并且添加错误。

删除这些文件解决了这个问题。

答案 4 :(得分:8)

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

Eric L. Anderson's post "Duplicate ‘System.Reflection.AssemblyCompanyAttribute’ attribute"描述了3个选项:

答案 5 :(得分:4)

对我而言,AssembyInfo.cs和SolutionInfo.cs具有不同的值。所以也要检查这些文件。我刚刚删除了其中一个版本。

答案 6 :(得分:4)

这里的项目中必须已经有一个AssemblyInfo.cs文件: enter image description here

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

答案 7 :(得分:3)

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

答案 8 :(得分:3)

在我的情况下,项目中的子文件夹是自己的项目文件夹:

  • 文件系统:

    • C:\项目\的WebAPI \ wepapi.csproj
    • C:\项目\的WebAPI \测试\ wepapitests.csproj
  • 溶液

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

然后我不得不删除子文件夹&#34;测试&#34;来自&#34; webapi&#34;项目

答案 9 :(得分:1)

如果在Azure DevOps上的生成管道中遇到此问题,请尝试在AssembyInfo.cs文件属性中将“生成操作”作为“内容”并将“复制到输出目录”复制为“如果有更新则复制”。

答案 10 :(得分:1)

我最近在没有更改源代码的情况下遇到了这个问题,但是在尝试了一些新的项目参考之后。即使在恢复分支中的所有更改后,我也进入了出现此错误的状态。

清理分支为我解决了这个问题:

git clean -xfd

答案 11 :(得分:1)

如果我在Visual Studio 2017中编译了项目,这通常会发生在我身上,然后我尝试通过命令行命令“ dotnet run”使用.NET Core重建并运行它。

只需删除所有“ bin”和“ obj”文件夹-既在“ ClientApp”内部,又直接在项目文件夹中-都允许.NET Core命令“ dotnet run”重新构建并成功运行。

答案 12 :(得分:0)

我刚从 .NET Framework 切换到 .NET Core 后出现错误。我的 Visual Studio 解决方案中有 2 个类库项目。我意识到其中一个项目有一个名为 AssemblyInfo.cs 的文件,而另一个项目没有该文件。该文件位于 Properties 文件夹下。我只是删除了 Properties 文件夹,一切正常。

答案 13 :(得分:0)

我必须删除整个存储库,然后克隆一个新副本才能使它正常工作。

我尝试删除上述所有文件,但是没有用。

答案 14 :(得分:0)

我一直在努力解决这个问题,但我的问题更容易解决。

我已将 OBJ 文件夹复制到“OBJ___”名称以进行一些编译测试。

所以,我不知道为什么,这个文件夹也被编译,造成程序集属性重复。

我只是删除了“OBJ___”文件夹,可以成功编译。

答案 15 :(得分:0)

此问题是参考冲突,大部分是VS 2017特有的。

我通过简单地注释掉第7 -14行以及AssemblyInfo.cs页面底部的Assembly版本代码来解决了相同的错误

它删除了所有重复的引用,并且该项目能够再次构建。

答案 16 :(得分:0)

您可以删除binobj 文件并清除项目的缓存。我的问题由此得到解决。

答案 17 :(得分:0)

obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(15,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(16,12): error CS0579: Duplicate 'System.Reflection.AssemblyFileVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(17,12): error CS0579: Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(18,12): error CS0579: Duplicate 'System.Reflection.AssemblyProductAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(19,12): error CS0579: Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(20,12): error CS0579: Duplicate 'System.Reflection.AssemblyVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]

我认为我的Library文件夹由于无意中创建了另一个类库而损坏了。我删除了所有相关文件,但问题仍然存在。我通过删除目录中的所有bin和obj文件夹找到了解决方法。之前的构建还可以,但是找到了具有相同assemblyinfo.cs文件的子文件夹。

答案 18 :(得分:0)

当我的主项目与解决方案位于同一文件夹中时,我遇到了这个问题,然后我在同一解决方案中的一个子文件夹中拥有一个单独的项目,并且该单独的项目将主项目用作参考。这导致主项目检测到子文件夹bin和obj文件夹,这些文件夹创建了重复的引用。

答案 19 :(得分:0)

当我将2个项目放在同一目录中时出现此错误。如果我有一个带有解决方案的目录,并且在其中放置了单独的Web和Data目录,则可以正确编译。

答案 20 :(得分:0)

编辑您的AssemblyInfo.cs和#if!NETCOREAPP3_0 ... #endif

$ cat dat/sentences_rev.txt
gnitcepxE eht dlrow ot taert uoy
ylriaf esuaceb uoy era a doog nosrep
si a elttil ekil gnitcepxe eht llub ton ot
kcatta uoy esuaceb uoy era a nairategev.

答案 21 :(得分:0)

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

AssemblyInfo.cs

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

my.csproj 包含与所有assemblyu属性相关的所有信息:

<PropertyGroup>
...
<Company>SOME Company </Company>
<Authors>Some Authors</Authors>
<Product>SOME Product</Product>
...
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute><GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>

csproj maps to package tab at project properties

答案 22 :(得分:0)

我在msdn上找到了这个答案,它解释了将文件标记为Content,然后复制到Output = If Newer。参见以下文章:

https://social.msdn.microsoft.com/Forums/en-US/8671bdff-9b16-4b49-ba9e-227cc4df31b2/compile-error-cs0579-duplicate-assemblyversion-attribute?forum=vsgatk

GH

答案 23 :(得分:0)

将核心升级到VS2017的另一个解决方案是在properties \ assemblyinfo.cs文件中删除它们。

因为它们现在存储在项目中。

答案 24 :(得分:0)

我的错误是我还在我的项目中引用了另一个文件,该文件还包含属性&#34; AssemblyVersion&#34;的值。我从其中一个文件中删除了该属性,现在它正常工作。

关键是要确保在项目的任何文件中都不会多次声明此值。