C# MSBuild:如何重写输出文件名以使其与程序集名称不同?

C# MSBuild:如何重写输出文件名以使其与程序集名称不同?,c#,msbuild,C#,Msbuild,我的解决方案中有两个C#项目,它们都是DLL: MyApp.UI.WPF.csproj MyApp.UI.WinForms.csproj 我的安装过程保证在任何给定时间只安装其中一个。无论是哪种情况,当用户运行应用程序时,MyApp.exe引导程序都将获取它 由于两个DLL包含相同的入口点,因此我希望引导程序保持通用: class Bootstrapper { static void Main() { var asm = Assembly.Load("MyAp

我的解决方案中有两个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.
    }
}
这意味着我必须在项目选项“MyApp.UI”中为两个DLL提供相同的程序集名称。问题是MSBuild使用程序集名称作为输出名称,这给我带来了冲突


是否可以说服MSBuild改用其他文件名,例如项目名称?

这是CoreComile任务的一个功能,您必须重写它以修改csc上的/out开关。这不是推荐的做法,但可以实现您的目标。

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

这就是我最后要做的。我还添加了一个预构建事件,如果目标文件已经存在,它将删除该文件。如果不这样做,重命名有时会失败。