2

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

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

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

谢谢

4

1 回答 1

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>

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

于 2013-04-11T08:11:49.017 回答