c# - 如何自动将解决方案中的所有项目设置为同一版本?

标签 c# visual-studio visual-studio-2017 version projects-and-solutions

我有一个包含 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/

相关文章:

c# - 当前文件夹中的图像在新上传时不会被删除

c# - 图片上传不损失质量

c# - 将控件属性(例如颜色)数据绑定(bind)到未显示的字段

javascript - 启用脚本调试后无法在 Visual Studio 中运行 angularJS 应用程序 (1.6)

c# - Visual Studio 2017 快速操作灯泡图标与新 Screwdriver 图标

c# - 如何在 sitecore 中创建自定义 token

c# - 如何在 C# 中运行 Windows bash

c++ - C++中的左大括号 "{"错误

c# - 微软git上 "Edited in both"冲突如何解决?

git - 使用 Visual Studio 2017 通过 SSH 连接到 Git 存储库