在同一个解决方案中,在vdproj的预构建事件中更改csproj程序集信息中的Product Name
本文关键字:csproj 信息 Name Product 程序集 构建 解决方案 同一个 vdproj 事件 | 更新日期: 2023-09-27 18:08:40
我工作的公司有一种产品被多个客户使用。不幸的是,其中一个客户不喜欢我们给产品起的名字,并花钱给它取了一个不同的名字。因为我们支持同一个产品有两个名称,所以最好的管理方法是更改WinForms项目的AssemblyInfo.cs文件中的AssemblyTitle和AssemblyProduct。
由于安装项目也需要给出产品名称,为了防止开发人员忘记更改名称的问题,我创建了2个单独的安装项目,每个产品名称一个,但它们在其他方面是相同的,并引用相同的WinForms项目。
为了确保AssemblyInfo.cs文件是正确的,我正在考虑通过每个安装项目的预构建事件来自动化此操作。有人知道有效的方法吗?我的大部分研究都让我看到了如何在安装项目中更改信息的链接。
谢谢
MSBuild Community Tasks有一个AssemblyInfo任务,它允许您生成一个AssemblyInfo文件。在PreBuild事件中调用这个任务,你就可以开始了!
编辑,一些细节…
假设您已经安装了社区任务,在*.csproj:
上面添加这个Import语句:<Import Project="$(MSBuildExtensionsPath)'MSBuildCommunityTasks'MSBuild.Community.Tasks.Targets"/>
接下来取消项目文件末尾的<Target Name=BeforeBuild">
部分的注释,并添加AssembyInfo任务,因此您最终会得到如下内容:
<Target Name="BeforeBuild">
<AssemblyInfo OutputFile="Properties'AssemblyInfo.cs"
CodeLanguage="CS"
AssemblyCompany="My Company"
AssemblyCopyright="(C) My Company, 2013"
AssemblyFileVersion="1.0.0.0"
AssemblyInformationalVersion="1.0.0.0"
AssemblyTitle="My Assembly Title"
AssemblyProduct="My Product"
AssemblyVersion="1.0.0.0"
/>
</Target>
重新加载您的项目并生成,您应该看到您的值附加到程序集。