在同一个解决方案中,在vdproj的预构建事件中更改csproj程序集信息中的Product Name

本文关键字:csproj 信息 Name Product 程序集 构建 解决方案 同一个 vdproj 事件 | 更新日期: 2023-09-27 18:08:40

我工作的公司有一种产品被多个客户使用。不幸的是,其中一个客户不喜欢我们给产品起的名字,并花钱给它取了一个不同的名字。因为我们支持同一个产品有两个名称,所以最好的管理方法是更改WinForms项目的AssemblyInfo.cs文件中的AssemblyTitle和AssemblyProduct。

由于安装项目也需要给出产品名称,为了防止开发人员忘记更改名称的问题,我创建了2个单独的安装项目,每个产品名称一个,但它们在其他方面是相同的,并引用相同的WinForms项目。

为了确保AssemblyInfo.cs文件是正确的,我正在考虑通过每个安装项目的预构建事件来自动化此操作。有人知道有效的方法吗?我的大部分研究都让我看到了如何在安装项目中更改信息的链接。

谢谢

在同一个解决方案中,在vdproj的预构建事件中更改csproj程序集信息中的Product Name

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>

重新加载您的项目并生成,您应该看到您的值附加到程序集。