我有一个包含 5 个 C# 项目的 Visual Studio 解决方案。我希望程序集版本在每个项目中都匹配。但看起来我必须进入每个项目的属性并一次单击每个项目的程序集版本。有没有一种方法可以将解决方案视为只有一个适用于每个项目的整体版本?
最佳答案
只需创建一个文件,例如GlobalAssemblyInfo.cs
在解决方案根文件夹中,然后向其添加必要的属性,最后将其作为现有项目作为链接添加到每个项目。
在Solution Explorer
右键单击 project name > Add > Existing item...
并在对话框中选择 Add As Link
下拉列表中的选项,如您在此 image 中所见.
// Content of GlobalAssemblyInfo.cs file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
请注意:
- 您必须从每个项目的
Properties\AssemblyInfo.cs
中删除这些属性文件。 - 您还可以将其他程序集属性移至
GlobalAssemblyInfo.cs
文件也是
结果是您将只有一个文件可以在其中设置版本并将它应用于所有项目。
更新 #1:
在.NET 5
项目AssemblyInfo.cs
默认情况下,文件在构建期间自动生成。
自动生成的属性好像只有7个:
-
AssemblyCompanyAttribute
-
AssemblyProductAttribute
-
AssemblyConfigurationAttribute
-
AssemblyVersionAttribute
-
AssemblyFileVersionAttribute
-
AssemblyInformationalVersionAttribute
-
AssemblyTitleAttribute
这里有两个选择:
- 禁用
AssemblyInfo.cs
的自动生成文件。 - 离开自动生成
AssemblyInfo.cs
启用文件并关闭特定属性的生成。
创建一个文件(名称:Directory.Build.props
)并将其放在.sln
旁边文件,以便它将应用于解决方案中的所有项目。
示例 #1 - 禁用 AssemblyInfo.cs
的自动构建文件
Directory.Build.props
:
<Project>
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
示例 #2 - 仅禁用特定属性生成
在这种情况下只需添加 <Generate...>false</Generate...>
禁用特定属性的行,其中 ...
是属性类型名称。
Directory.Build.props
:
<Project>
<PropertyGroup>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>
</Project>
备注
了解更多关于 AssemblyInfo properties 的信息在 SDK 样式的项目文件中。
此更新也适用于 .NET Core 版本。
如果特定项目有特殊需要,您可以在 .csproj
中覆盖这些设置文件也是如此。
对于我来说,我通常把属性放在下面:
-
GlobalAssemblyInfo.cs
-
AssemblyCompanyAttribute
-
AssemblyProductAttribute
-
AssemblyCopyrightAttribute
-
AssemblyConfigurationAttribute
-
AssemblyTrademarkAttribute
-
AssemblyCultureAttribute
-
AssemblyVersionAttribute
-
AssemblyFileVersionAttribute
-
AssemblyInformationalVersionAttribute
-
ComVisibleAttribute
-
-
AssemblyInfo.cs
(在具体项目中)-
AssemblyTitleAttribute
-
AssemblyDescriptionAttribute
-
GuidAttribute
-
关于c# - 如何自动将解决方案中的所有项目设置为同一版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352600/