在同一解决方案中在vdproj的预构建事件中更改csproj程序集信息中的产品名称

时间:2013-04-11 07:53:32

标签: c# .net visual-studio build build-process

我工作的公司有一个供多个客户使用的产品。不幸的是,其中一个客户不喜欢我们给产品的名称,并且已经为它分配了不同的名称。由于我们支持具有两个名称的相同产品,因此我们管理它的最佳方法是在WinForms项目的AssemblyInfo.cs文件中更改AssemblyTitle和AssemblyProduct。

由于安装项目还需要提供产品名称,为了防止开发人员忘记更改名称的问题,我创建了2个单独的安装项目,每个产品名称一个,但是否则相同并引用相同的WinForms项目

为了确保AssemblyInfo.cs文件正确,我考虑通过每个安装项目的PreBuild事件自动执行此操作。有谁知道这样做的有效方法?我的大多数研究都让我看到了如何在安装项目中更改信息的链接。

由于

1 个答案:

答案 0 :(得分:3)

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>

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