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

Kar*_*c G 6 c# wpf assemblyinfo

我已将Asp.Net框架中的WPF项目迁移到Asp.Net core中。现有的 .net 项目在属性文件夹内有 AssemblyInfo.cs。使用“dotnet new wpf”创建新的 WPF 项目时创建新的 WPF 项目时。添加 AssemblyInfo.cs 文件。

\n

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

\n

计划删除自构建问题为“重复 ThemeInfo 属性”以来为核心创建的新项目,并使用在 csproj 中添加以下属性来禁用从 .Net 框架迁移的旧项目

\n
<ItemGroup>\xe2\x80\xaf\xe2\x80\xaf \n\xe2\x80\xaf\xe2\x80\xaf <Compile Remove="Properties\\AssemblyInfo.cs" />\xe2\x80\xaf\xe2\x80\xaf \n</ItemGroup>\xe2\x80\xaf\xe2\x80\xaf \n<ItemGroup>\xe2\x80\xaf\xe2\x80\xaf \n\xe2\x80\xaf <None Include="Properties\\AssemblyInfo.cs" />\xe2\x80\xaf\xe2\x80\xaf \n</ItemGroup>\xe2\x80\xaf\n
Run Code Online (Sandbox Code Playgroud)\n

需要知道 Net core 项目是否需要这个。

\n

Biz*_*han 12

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

.csproj在.NetCore中,您可以从文件而不是文件中管理AssemblyInfo AssemblyInfo.cs。该AssemblyInfo.cs文件将在 obj 文件夹中自动为您生成。您需要做的就是在 csproj 文件中设置其属性:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <AssemblyName>myAppName</AssemblyName>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

AssemblyInfo.cs如果项目中存在设置了任何属性的文件,编译器将抱怨重复的属性。在这种情况下,您应该设置GenerateAssemblyInfo为 false (这样它就不会自动生成x.AssemblyInfo.csobj 文件夹):

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <AssemblyName>myAppName</AssemblyName>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

您可以选择仅通过将自动生成属性设置为 false 来手动处理程序集信息(通过AssemblyInfo.cs文件而不是通过文件)。.csproj例如,您可以设置GenerateAssemblyInfo为 false 以防止自动生成 ,AssemblyInfo.cs或者您可以设置GenerateAssemblyTitleAttribute为 false 以防止自动生成Title内部属性AssemblyInfo.cs这意味着您可以在AssemblyInfo 和 csproj中设置程序集信息。当您想要在不同项目之间共享一组通用信息,同时能够更改每个项目中的一些信息时,这会派上用场。(虽然你不能两次设置一个属性,但这仍然是一个有用的功能)


附注:既然您已经迁移到 .NetCore,如果您还没有这样做,您可能还想将 csproj 迁移到 Project SDK 格式。然后,您会注意到 csproj 中消失了很多混乱,使其更具可读性且更易于维护,将更多注意力放在提到的属性上。

有一种方法可以在经典 .Net 应用程序中执行相同的操作:https://github.com/dasMulli/AssemblyInfoGenerationSdk


Jus*_*tin 0

当您将项目从 .NET Framework 升级到 .NET Core 或 .NET 5 或 .NET 6 时,应删除 Properties/AssemblyInfo.cs。如您所见,否则您将收到构建错误。相反,现在的信息应该直接存储在 .csproj 文件中。