MSBuild:如何覆盖输出文件名与程序集名称不同?

时间:2009-05-08 12:34:17

标签: c# msbuild

我的解决方案中有两个C#项目,两个都是DLL:

  • MyApp.UI.WPF.csproj
  • MyApp.UI.WinForms.csproj

我的设置过程保证在任何给定时间只安装其中一个。无论哪个,当用户运行应用程序时,MyApp.exe引导程序都会将其选中。

由于两个DLL都包含相同的入口点,因此我想保持引导程序的通用性:

class Bootstrapper
{
    static void Main()
    {
        var asm = Assembly.Load("MyApp.UI");

        // Execute the UI entry point here.
    }
}

这意味着我必须在项目选项中为两个DLL提供相同的程序集名称:“MyApp.UI”。问题是MSBuild使用程序集名称作为输出名称,这给我带来了冲突。

是否有可能说服MSBuild使用不同的文件名,例如:项目名称?

2 个答案:

答案 0 :(得分:2)

您可以在构建中添加<PostBuildEvent>,将输出程序集重命名为通用名称。

答案 1 :(得分:1)

这将是CoreCompile任务的一个功能,您必须覆盖它以修改csc上的/ out开关。这不是推荐的做法,但会实现您的目标。