0

由于 ClickOnce,我需要为使用的每个环境/配置更改 WPF 应用程序的程序集名称。

配置是:

  • 调试
  • 测试
  • 发布

因此,为了能够将这 3 个环境发布到 ClickOnce 并将它们全部安装在一台机器上而不会覆盖另一台机器,我们需要为所有三个环境的解决方案的主项目使用不同的程序集名称。程序集将被命名为:

  • MyApp.Client.Debug
  • MyApp.Client.Testing
  • 我的应用程序客户端

多亏了这个 StackOverflow 答案,我设法做到了,而且效果很好。MyApp.Client.csproj 的代码是这样的:

 <PropertyGroup>
...
    <AssemblyName>MyApp.Client</AssemblyName>
...
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <AssemblyName>MyApp.Client.Debug</AssemblyName>
    ...
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Testing|AnyCPU' ">
    <AssemblyName>MyApp.Client.Testing</AssemblyName>
    ...
</PropertyGroup>

我可以将它发布到我的不同环境并且运行良好,我可以执行我的应用程序并使用它。但我无法在 Visual Studio 中调试它,似乎 IDE 将“MyApp.Client”作为应用程序入口点并抛出如下内容:

Visual Studio 无法开始调试,因为缺少调试目标“D:\Code\MySolution\MyApp\bin\Testing\MyApp.Client.exe”。请构建项目并重试,或适当设置 OutputPath 和 AssemblyName 属性以指向目标程序集的正确位置。

在测试中,它应该搜索 MyApp.Client.Testing.exe,但这不会发生。关于这个错误,我已经在谷歌上搜索了一段时间,但我一直无法找到解决方案。我发现的所有参考资料都谈到了更改的 OutputPath 之类的东西,但我认为这不是问题,因为 OutputPath 没问题,问题是可执行文件名称。

任何帮助,将不胜感激。谢谢。

4

1 回答 1

1

有条件地更改主程序集名称时,调试在 VS2017 中不起作用

那是因为Visual Studio调试模式(例如,当您选择 Configuration to 时,属性窗口中的默认属性仍然存在:Project->Properties->Application->Assembly name.csproj.exe.csprojTestingAssembly nameMyApp.Client

在此处输入图像描述

要解决此问题,您应该手动更改默认属性Assembly name,例如 MyApp.Client.Testing:

在此处输入图像描述

于 2017-11-09T03:56:49.947 回答