VS2010自定义构建

时间:2011-10-23 23:53:16

标签: msbuild

我有一个C#/ WPF应用程序。我正在尝试创建不同的版本,这些版本将通过其品牌发送给不同的客户。 品牌目前在AssemblyInfo.cs中,一个图标,启动画面,exe名称。

我以为我可以创建单独的项目配置,然后我想我可以为每个客户创建单独的AssemblyInfo.cs文件。

但该项目似乎只允许一个assemblyinfo,并且不允许在每个配置的基础上更改它(例如,它是Project Properties对话框中的第一个选项卡)。

是一种更好的方式以某种方式将AssemblyInfo.cs信息放在一个资源中,然后有多个资源文件,每个客户一个,并具有链接在不同资源中的单独配置?

我希望当我继续开发时,我可以在原生品牌下开发,然后只需批量构建所有版本构建,为每个客户生成exes。

关于如何制作可维护的解决方案的任何帮助或建议都会很棒。

1 个答案:

答案 0 :(得分:2)

AssemblyInfo.cs文件虽然是一个类文件,但实际上并没有任何类信息,默认情况下它只包含属性。您可以在这些属性周围使用条件编译符号:

#if MY_SYMBOL
[assembly: AssemblyTitle("Tim's Magical Application")]
#else
[assembly: AssemblyTitle("Some Other Name")]
#endif

您也可以在那里使用自己的custom attributes

  

但该项目似乎只允许一个assemblyinfo

此文件位于项目的“属性”文件夹中。您还可以在其旁边放置另一个.cs文件,其中包含另一个属性列表(即 AssemblyInfo.custom.cs )。您通过项目属性对话框更改的任何条目都会反映在原始的AssemblyInfo.cs文件中,而您的自定义条目不会受到影响。

因此,如果您决定使用AssemblyInfo.cs中的属性来控制客户特定的品牌,那么您有几种方法可以做到这一点。就个人而言,我会松散地打包中性图像,并使用我的构建过程或安装程序构建在可分发包中包含适当的品牌图像(替换中性图像)。