簡體   English   中英

.Net Core 項目是否需要 AssemblyInfo.cs 文件?

[英]Is AssemblyInfo.cs file needed for .Net Core projects?

我已將 Asp.Net 框架中的 WPF 項目遷移到 Asp.Net 核心中。 現有的 .net 項目在屬性文件夾中有 AssemblyInfo.cs。使用“dotnet new wpf”創建新的 WPF 項目時。 AssemblyInfo.cs 文件被添加。

.Net 框架中的 AssemblyInfo.cs 包含所有信息,但 dot net core 中的沒有任何信息

計划刪除為核心創建的新項目,因為構建問題為“重復的 ThemeInfo 屬性”,並使用 csproj 中的添加以下屬性禁用從.Net 框架遷移的舊項目

<ItemGroup>   
   <Compile Remove="Properties\AssemblyInfo.cs" />   
</ItemGroup>   
<ItemGroup>   
  <None Include="Properties\AssemblyInfo.cs" />   
</ItemGroup> 

需要知道 Net core 項目是否需要這樣做。

AssemblyInfo.cs 很有用,但不是必需的。

在.NetCore 中,您可以從 csproj 文件而不是 AssemblyInfo 管理程序集信息。 該文件將在 obj 文件夾中為您自動生成。 您需要做的就是在 csproj 文件中設置它們:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <AssemblyName>myAppName</AssemblyName>
  </PropertyGroup>
</Project>

如果您的項目中存在具有任何屬性集的 AssemblyInfo,編譯器將抱怨重復屬性。 在這種情況下,您應該將GenerateAssemblyInfo設置為 false(這樣它就不會自動將 x.AssemblyInfo.cs 生成到 obj 文件夾中):

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

您可以選擇手動處理程序集信息,但將自動生成屬性設置為 false(例如GenerateAssemblyInfoGenerateAssemblyTitleAttribute等),這意味着您可以AssemblyInfo 和 csproj 中設置程序集信息。 當您想在不同項目之間共享一組通用信息,同時能夠更改每個項目中的一些信息時,這會派上用場。 (雖然你不能設置一個屬性兩次,但這仍然是一個有用的功能)


附帶說明:由於您已遷移到 .NetCore,如果您還沒有完成,您不妨將您的 csproj 遷移到 Project SDK 格式。 然后你會注意到很多雜亂的東西從 csproj 中消失了,使它更具可讀性和更容易維護,更多地關注那些提到的屬性。

在 Classic.Net 應用程序中有一種方法可以做同樣的事情: https://github.com/dasMulli/AssemblyInfoGenerationSdk

Properties/AssemblyInfo.cs should be removed when you upgrade your project from .NET Framework to .NET Core or .NET 5 or .NET 6. As you saw, you will get build errors otherwise. 相反,現在那里的信息應該直接存儲在 .csproj 文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM