【发布时间】: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