首页 / 知识
关于.net:使用程序集属性的最佳做法是什么?
2023-04-15 07:53:00
What are the best practices for using Assembly Attributes?我有一个多项目的解决方案。 我试图通过链接一个解决方案范围的程序集信息文件来优化AssemblyInfo.cs文件。 这样做的最佳做法是什么? 哪些属性应该在解决方案范围的文件中,哪些属于项目/程序集特定? 编辑:如果您有兴趣,有一个后续问题AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别? 我们使用名为GlobalAssemblyInfo.cs的全局文件和名为AssemblyInfo.cs的本地文件。全局文件包含以下属性:
本地AssemblyInfo.cs包含以下属性:
您可以使用以下过程添加GlobalAssemblyInfo.cs:
就我而言,我们正在构建一个产品,我们有一个Visual Studio解决方案,在他们自己的项目中有各种组件。共同的属性去了。在该解决方案中,大约有35个项目和一个通用程序集信息(CommonAssemblyInfo.cs),它具有以下属性:
其他属性,如AssemblyTitle,AssemblyVersion等,我们提供基于每个程序集。构建程序集时,AssemblyInfo.cs和CommonAssemblyInfo.cs都内置于每个程序集中。这为我们提供了两个世界中最好的东西,您可能希望为所有项目提供一些共同属性,为其他项目提供特定值。 希望有所帮助。 @JRoppert提出的解决方案与我的解决方案几乎相同。唯一的区别是我将以下行放在本地AssemblyInfo.cs文件中,因为它们可能因每个程序集而异:
我(通常)每个解决方案使用一个通用的装配信息,假设一个解决方案是单个产品线/可释放产品。通用程序集信息文件还具有:
这将设置Windows资源管理器显示的"ProductVersion"值。 MSBuild社区任务包含一个名为AssemblyInfo的自定义任务,您可以使用它来生成assemblyinfo.cs。它需要对您的csproj文件进行一些手动编辑才能使用,但这是值得的。 在我看来,使用GlobalAssemblyInfo.cs比它的价值更麻烦,因为你需要修改每个项目文件并记住修改每个新项目,而默认情况下你得到AssemblyInfo.cs。 对于全球价值观的变化(即公司,产品等),变化通常很少且易于管理我不认为DRY应该是一个考虑因素。如果要手动将所有项目中的值更改为一次性,只需运行以下MSBuild脚本(取决于MSBuild扩展包):
要在多个项目之间共享文件,您可以将现有文件添加为链接。
为此,请添加现有文件,然后单击文件选择器中的"添加为链接"。 至于要放在共享文件中的内容,我建议放置将在程序集之间共享的内容。像版权,公司,也许版本的东西。 我发现有用的一件事是通过在预构建阶段应用令牌替换来生成AssemblyVersion元素(等)。
我使用TortoiseSvn,很容易使用它的
第三个元素是修订号。我使用第四个元素来检查我没有忘记提交任何新的或更改的文件(如果一切正常,第四个元素是00)。
顺便说一句,将
建议不要将单个AseemblyInfo.cs文件用于多个项目。
更好的解决方案可能是使用由MSBuild处理的 |
最新内容
相关内容
linux文件io命令?
linux文件io命令?,系统,设备,时间,地址,平均,信息,服务,工具,报告,网络,嵌入式Linux开发中的文件I/O是什么?1、文件I/O就是对外设进行文件抽象改文件linux命令行?
改文件linux命令行?,地址,系统,工作,信息,数字,文件,命令,设备,密码,权限,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命拷贝文件夹linux命令?
拷贝文件夹linux命令?,系统,地址,服务,信息,密码,情况,单位,项目,命令,文件,linux系统如何挂载硬盘并拷贝到某个目录下?copy命令 该命令的功进入文件夹linux命令?
进入文件夹linux命令?,系统,密码,终端,目录,标的,一致,传播,图片,环境,工作,linux系统怎么进入某个文件1、要修改/etc/profile,先要使用root用打包文件命令linux?
打包文件命令linux?,系统,时间,工具,名称,命令,文件,目录,格式,表示,详细信息,linux打包?打开终端并进入要打包的目录。使用cd命令切换到要打linux删除命令文件夹?
linux删除命令文件夹?,系统,数据,通用,文件夹,命令,文件,环境,百度,不了,名称,linux删除文件的方法linux删除文件夹的方法有两种:rmdir命令和rmlinux文件io命令?
linux文件io命令?,系统,设备,时间,地址,平均,信息,服务,工具,报告,网络,嵌入式Linux开发中的文件I/O是什么?1、文件I/O就是对外设进行文件抽象linux中文件编辑命令?
linux中文件编辑命令?,系统,工作,工具,信息,地址,发行,命令,第一,检测,基础,linux有哪些的必学文件处理命令?linux入门式必学的文件处理命令,主linux文件格式的命令?
linux文件格式的命令?,设备,命令,系统,文件,标准,代码,情况,电脑,平台,数据,linux更改文件类型命令1、s 套接字文件。b 块设备文件,二进制文件linux命令行编译文件?
linux命令行编译文件?,代码,系统,项目,工具,网上,手机,电脑,地址,官网,文件,Linux下,用什么命令编译m文件为可执行文件所以使用gcc test -o telinux下文件写入命令?
linux下文件写入命令?,系统,信息,文件,名字,电脑,软件,目录,命令,内容,指令,linux虚拟机磁盘格式化和挂载后如何在挂载的目录里写入文件1、若linux命令备份文件夹?
linux命令备份文件夹?,设备,系统,文件,命令,备份,情况,做好,名字,灵活,数据,linux怎么设置原目录和备份目录dump命令 Linux dump命令用于备份