【问题标题】:Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute重复的“System.Reflection.AssemblyInformationalVersionAttribute”属性
【发布时间】:2020-04-21 14:29:03
【问题描述】:

我正在尝试深入研究 ASP.NET Core。所以,我决定尝试使用 VS Code 创建一个宠物项目。

在 dotnet cmd 的帮助下,我创建了一个解决方案,将项目添加到其中(应用程序、测试、EF、映射等)并设置项目之间的引用。

但是现在当我尝试运行解决方案时,我收到了Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute 错误和一堆其他奇怪的错误。这是我遇到的一些错误:

c:\Projects\dotNet\BestTongue\Utilities\objBinRemove\obj\Debug\netcoreapp3.0\objBinRemove.AssemblyInfo.cs(10,12): error CS0579: Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute [C:\Projects\dotNet\BestTongue\BestTongue.csproj]
c:\Projects\dotNet\BestTongue\Utilities\objBinRemove\obj\Debug\netcoreapp3.0\objBinRemove.AssemblyInfo.cs(11,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute [C:\Projects\dotNet\BestTongue\BestTongue.csproj]
...

我不确定我还需要在问题中添加什么才能使问题得到解决。所以,如果我遗漏了什么,请在 cmets 中询问所有必要的细节。

我花了很多时间试图找到问题的解决方案,但徒劳无功。

更新

按照 cmets 部分的建议,我尝试使用 the related question 中提到的解决方案。

我尝试添加:

<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>

所以,现在我的.csproj 看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">

  <ItemGroup>
    <ProjectReference Include="..\App\App.csproj" />
    <ProjectReference Include="..\Data\Data.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
  </ItemGroup>

  <PropertyGroup>
    <TargetFramework>netstandard3.0</TargetFramework>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
  </PropertyGroup>

</Project>

但我仍然看到相同的错误:

另外,我编写了一个脚本,它遍历了所有项目并删除了*.AssemblyInfo.cs。之后,我检查了构建项目是否会将*.AssemblyInfo.cs 带回来。并且*.AssemblyInfo.cs 确实会在再次构建后出现。另外,现在(在.csproj文件修改后)我得到了一个新的错误:

C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(140,5): error NETSDK1045: 当前的 .NET SDK 没有支持面向 .NET Standard 3.0。以 .NET Standard 2.1 或更低版本为目标,或者使用支持 .NET Standard 3.0 的 .NET SDK 版本。 [C:\Projects\dotNet\BestTongue\Controllers\Controllers.csproj] C:\程序

Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(140,5):错误 NETSDK1045:当前的 .NET SDK 不支持定位 .NET标准 3.0。以 .NET Standard 2.1 或更低版本为目标,或者使用支持 .NET Standard 3.0 的 .NET SDK 版本。 [C:\Projects\dotNet\BestTongue\App\App.csproj]

这对于试图帮助我在本地检查解决方案的人可能很有用。 Here 是具有最新更改的解决方案存储库。

【问题讨论】:

  • 您在单个项目中有多个 *.AssemblyInfo.cs 文件导致您的错误。我不确定你为什么有这些文件,因为 .NET 从 Core 开始不再使用 AssemblyInfo.cs,所以只需删除它们,你的错误就会消失。
  • 在你的 .csprojs 文件中,确保你有这个:false
  • 这能回答你的问题吗? Duplicate AssemblyVersion Attribute
  • @IanKemp,您确定删除文件会有帮助吗?这些文件位于obj 文件夹中。并且 afaik 该文件夹将在每次构建后重新创建。那我应该写一个脚本来删除文件吗?这些文件是由于创建项目而创建的。我在dotnet new classlib 的帮助下创建了每个单独的项目,因为我只需要那些项目中将被我的主项目利用的功能。我应该为我的案例创建不同类型的项目(不是classlib)吗?
  • @JaliyaUdagedara,很遗憾,但这并没有帮助。我尝试将其作为首批度假村之一。

标签: asp.net-core .net-core visual-studio-code


【解决方案1】:

这很明显(Ian Kemp nos 1 以上)。我正在将 .net 应用程序升级到 .net core 5,努力摆脱这个问题。现在一切都好。 在您的 .net 核心应用程序上进行文件搜索(我假设 3.X 是相同的)并删除所有 AssemblyInfo.cs 文件(.net 核心从项目文件中构建 AssembleyInfo,因此如果您也删除这些文件也没关系。 重新编译,问题应该会消失。 另外,请确保您的库 (DLL) 文件都是属性组中的“库”...例如

<PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
  </PropertyGroup>

【讨论】:

    【解决方案2】:

    我通过重新构建解决方案而不是删除文件或更改任何设置来解决这个问题。

    我原来的结构是这样的,注意所有项目都在解决方案文件夹中:

    解决方案文件夹

    • 网站项目
    • 商业项目
    • 存储库项目
    • 数据库项目

    我将其重新构造为如下所示,现在我不再有重复的属性错误:

    解决方案文件夹

    • 网站项目

    业务文件夹

    • 商业项目

    存储库文件夹

    • 存储库项目

    数据库文件夹

    • 数据库项目

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 2011-11-29
      • 2016-12-26
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多