我有一个项目,在编译时产生以下错误:
重复'AssemblyVersion'属性
我检查了文件AssemblyInfo.cs,看起来没有重复。
我在MSDN上找到了这篇文章,它解决了一个类似的问题,并按照这篇文章中的建议解决了这个问题。
有人能告诉我这是怎么回事吗?这种情况是否只发生在有两个或多个类名称相似的项目的情况下?还是其他原因?
我有一个项目,在编译时产生以下错误:
重复'AssemblyVersion'属性
我检查了文件AssemblyInfo.cs,看起来没有重复。
我在MSDN上找到了这篇文章,它解决了一个类似的问题,并按照这篇文章中的建议解决了这个问题。
有人能告诉我这是怎么回事吗?这种情况是否只发生在有两个或多个类名称相似的项目的情况下?还是其他原因?
当前回答
当我把两个项目放在同一个目录中时,我得到了这个错误。如果我有一个解决方案的目录,我把一个单独的Web和数据目录放在它编译正确。
其他回答
我的错误是我还引用了项目中的另一个文件,该文件也包含属性“AssemblyVersion”的值。我从其中一个文件中删除了该属性,现在它正常工作了。
关键是要确保在项目中的任何文件中声明这个值不超过一次。
这个问题是VS 2017特有的参考冲突。
我通过在AssemblyInfo.cs中注释掉第7 -14行以及页面底部的程序集版本代码来解决了同样的错误
它删除了所有重复的引用,项目能够重新构建。
创建项目时,Visual Studio会将其设置为编译并生成相应的程序集。每个项目生成一个程序集,因此每个项目都有相应的程序集配置来生成其程序集。
问题是,当您创建多个项目时,每个项目都可以生成自己的程序集,然后将其中一个项目包含在另一个项目中。
在这种情况下,Visual Studio会感到困惑,不知道从哪个配置文件开始为项目生成单个程序集——它会在包含的项目中找到第二个程序集配置,并说“HEY, DUPLICATE!你给了我两套指令来生成我的程序集!”
但有时您仍然希望所包含的项目能够自行生成程序集,但当它被包含在另一个项目中时,则不能这样做。
要获得这一点,一种解决方案是向包含项目的项目(在项目属性中可以找到)添加条件定义。然后更改所包含项目中的程序集配置,以查找此条件定义。如果它是定义的(由包括项目),那么配置可以跳过它的内容——这将导致只有一个配置被VS发现——从包括项目——问题解决了!
以下步骤(包括截图)
步骤1:选择包含/容器项目>右键单击>属性
项目属性(截图)
步骤2:导航到Build > General >条件编译符号
添加如下所示的条件定义:
条件编译符号(截图)
步骤3:在包含的项目AssemblyInfo.cs中使用条件定义
使用条件定义(截图)
从Visual Studio 2017开始,另一个继续使用AssemblyInfo.cs文件的解决方案是关闭自动生成组装信息,如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
我个人认为它对于需要同时支持。net框架和。net标准的项目非常有用。
我得到这些错误,因为我试图临时重命名obj文件夹为obj_,然后它自动包含在项目中。然后其中的assembly.cs开始与后来生成的obj文件夹中的正确的程序发生冲突。