什么是使用Assembly Attributes的最佳实践?

我有多个项目的解决方案。 我试图通过链接一个解决方案宽的程序集信息文件来优化AssemblyInfo.cs文件。 这样做的最佳做法是什么? 哪些属性应该在解决方案的宽文件中,哪些属于项目/程序集特定的?


编辑:如果你有兴趣有一个后续问题AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?


我们使用名为GlobalAssemblyInfo.cs的全局文件和名为AssemblyInfo.cs的本地文件。 全局文件包含以下属性:

 [assembly: AssemblyProduct("Your Product Name")]

 [assembly: AssemblyCompany("Your Company")]
 [assembly: AssemblyCopyright("Copyright © 2008 ...")]
 [assembly: AssemblyTrademark("Your Trademark - if applicable")]

 #if DEBUG
 [assembly: AssemblyConfiguration("Debug")]
 #else
 [assembly: AssemblyConfiguration("Release")]
 #endif

 [assembly: AssemblyVersion("This is set by build process")]
 [assembly: AssemblyFileVersion("This is set by build process")]

本地AssemblyInfo.cs包含以下属性:

 [assembly: AssemblyTitle("Your assembly title")]
 [assembly: AssemblyDescription("Your assembly description")]
 [assembly: AssemblyCulture("The culture - if not neutral")]

 [assembly: ComVisible(true/false)]

 // unique id per assembly
 [assembly: Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]

您可以使用以下过程添加GlobalAssemblyInfo.cs:

  • 在项目的上下文菜单中选择Add / Existing Item ...
  • 选择GlobalAssemblyInfo.cs
  • 点击右边的那个小箭头展开Add-Button
  • 在按钮下拉列表中选择“添加为链接”

  • 就我而言,我们正在构建一个产品,我们拥有一个Visual Studio解决方案,并在各自的项目中包含各种组件。 共同的属性去。 在该解决方案中,大约有35个项目和一个常用程序集信息(CommonAssemblyInfo.cs),它具有以下属性:

    [assembly: AssemblyCompany("Company")]
    [assembly: AssemblyProduct("Product Name")]
    [assembly: AssemblyCopyright("Copyright © 2007 Company")]
    [assembly: AssemblyTrademark("Company")]
    
    //This shows up as Product Version in Windows Explorer
    //We make this the same for all files in a particular product version. And increment it globally for all projects.
    //We then use this as the Product Version in installers as well (for example built using Wix).
    [assembly: AssemblyInformationalVersion("0.9.2.0")]
    

    其他属性,例如AssemblyTitle,AssemblyVersion等,我们以每个装配为基础提供。 构建程序集时,AssemblyInfo.cs和CommonAssemblyInfo.cs都内置到每个程序集中。 这给了我们两全其美的世界,您可能想要为所有项目设定一些共同属性,并为其他项目设定特定的值。

    希望有所帮助。


    @JRoppert提供的解决方案与我所做的几乎相同。 唯一的区别是我在本地AssemblyInfo.cs文件中放置了以下行,因为它们随每个程序集的不同而不同:

    #if DEBUG
    [assembly: AssemblyConfiguration("Debug")]
    #else
    [assembly: AssemblyConfiguration("Release")]
    #endif
    [assembly: AssemblyVersion("This is set by build process")]
    [assembly: AssemblyFileVersion("This is set by build process")]
    [assembly: CLSCompliant(true)]
    

    我还(通常)为每个解决方案使用一个常见组件信息,假设一个解决方案是单个产品线/可发布产品。 常见的程序集信息文件也有:

    [assembly: AssemblyInformationalVersion("0.9.2.0")]
    

    它将设置Windows资源管理器显示的“ProductVersion”值。

    链接地址: http://www.djcxy.com/p/37689.html

    上一篇: What are the best practices for using Assembly Attributes?

    下一篇: WRN: Assembly binding logging is turned OFF