Nat*_*han 21 .net c# .net-core
我注意到在新的 .NET Core 项目中没有AssemblyInfo.cs创建文件。我已经看到您仍然可以设置诸如AssemblyVersion等等之类的程序集属性。
使用 AssemblyInfo.cs 文件还有什么正当理由吗?
pok*_*oke 25
您绝对可以AssemblyInfo.cs像过去一样创建文件并配置程序集。当然,由于属性是使用程序集属性设置的,因此您不需要使用AssemblyInfo但可以选择任何其他文件名,甚至是现有的文件名。
话虽如此,AssemblyInfo.cs默认模板中不再包含的原因是新的 SDK 样式的项目类型支持在csproj项目文件中设置此信息。
因此,设置程序集版本的常用方法是Version在项目文件中设置属性(或将其自动设置为构建过程的一部分)。例如:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<Version>1.2.3</Version>
</PropertyGroup>
…
</Project>
Run Code Online (Sandbox Code Playgroud)
由于这是一个 MSBuild 属性,您还可以在构建过程中设置它,例如使用dotnet build /p:Version=1.2.3.
还有属性VersionPrefix和VersionSuffix可用于对来自环境的自动构建版本号(例如GIT中提交的ID,或版本号)。
除了版本相关的属性外,还有一些更多的 NuGet 属性可以在项目文件中设置,这使得AssemblyInfo.cs大部分都是多余的。
小智 21
根据迁移指南,目前我们很少有灵活的方法来设置程序集属性。
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("...")]
[assembly: System.Reflection.AssemblyCopyrightAttribute("...")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("...")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("...")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("...")]
[assembly: System.Reflection.AssemblyProductAttribute("...")]
[assembly: System.Reflection.AssemblyTitleAttribute("...")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0-dev01234567")]
Run Code Online (Sandbox Code Playgroud)
your.csproj或通过命令行参数传递,例如 /property:Version=1.0.0-dev01234567)。<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<Company>...</Company>
<Copyright>...</Copyright>
<Description>...</Description>
<Product>...</Product>
<AssemblyTitle>...</AssemblyTitle>
<Version>1.0.0-dev01234567</Version>
</PropertyGroup>
...
</Project>
Run Code Online (Sandbox Code Playgroud)
注意:您可以合并两个解决方案,但避免程序集属性重复。
dat*_*ung 17
我正在使用 Visual Studio 2022 和 .NET Core 6。
Version以下是包含,AssemblyVersion和的示例项目文件FileVersion:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.0.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
</PropertyGroup>
...
</Project>
Run Code Online (Sandbox Code Playgroud)
小智 11
仍然使用 AssemblyInfo.cs 文件的原因可能包括
\n\n[AssembyAttributes]csproj[AssembyAttributes]| 归档时间: |
|
| 查看次数: |
9712 次 |
| 最近记录: |