【问题标题】:The debugger attempts to launch the assembly with the wrong Assembly Name调试器尝试使用错误的程序集名称启动程序集
【发布时间】:2016-10-19 05:02:21
【问题描述】:

我有带有 Visual Studio 2010 的 C# 应用程序。我想要每个配置的程序集名称。也就是说,我需要不同的程序集名称来进行调试和发布配置。所以我编辑了我的 csproj 如下。

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
 <PropertyGroup>
    <...>
    <...>
  </PropertyGroup>
  <Choose>
    <When Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PropertyGroup>
        <AssemblyName>MyApplication</AssemblyName>
      </PropertyGroup>
    </When>
    <When Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PropertyGroup>
        <AssemblyName>MyApplicationd</AssemblyName>
      </PropertyGroup>
    </When>
  </Choose>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    <...>
    <OutputPath>..\..\..\..\utils\debug\Project\x64\</OutputPath>
    <...>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    <...>
    <OutputPath>..\..\..\..\utils\release\Project\x64\</OutputPath>
    <...>
  </PropertyGroup>
</Project>

构建成功,我获得了用于发布配置的 MyApplication.exe 和用于调试配置的 MyApplicationd.exe。但是当我 F5/F10 在调试模式下运行项目时,我遇到了错误。

Visual Studio 无法启动调试,因为调试目标是 失踪。请构建项目并重试,或设置 OutputPath 和 AssemblyName 属性适当地指向正确的位置 用于目标程序集。

我该如何解决这个问题?如何根据项目文件中的配置指定不同的程序集名称?

【问题讨论】:

  • 检查构建菜单下的构建配置管理器,您是否为您的项目启用了构建选项?或者您使用 AssemblyConfiguration 属性:stackoverflow.com/questions/1093338/…
  • @Jack Zhai:构建成功。问题是,我无法在调试模式下进行调试。它告诉未找到“MyApplication.exe”(即调试器尝试使用错误的 AssemblyName 启动程序集)。但可以在 Release 模式下调试。

标签: c# .net winforms .net-assembly visual-studio-debugging


【解决方案1】:

应该不是输出路径的问题,应该是和程序集名称有关。

我的理解是你得到了详细的错误列表:

“Visual Studio 无法开始调试,因为缺少调试目标”xxx\xxx\MyApplication””(注意:不是 MyApplicationd)。我说的对吗?

右键你的项目->Property->Application,如果你检查你的Assembly name,我的理解是它会是发布名称“MyApplication”的名称。如果你真的想在debug模式下调试,这个属性的名字必须是“MyApplicationd”,当然如果你使用debug程序集名,release模式就不行了。

我的理解是,我们可以在项目属性中编辑 UI 程序集名称,然后在您的 .xxproj 文件中生成 xml 代码,但是如果您直接编辑 proj 文件,它不会在 UI 下自动更改它。

我这里也是这样用的:

Change assembly name based on configuration (Visual Studio 2005/2008)

但它与您的错误消息相同。

你使用的方式好像和MSBuild命令行有关:

Change name of exe depending on conditional compilation symbol

【讨论】:

  • 是的。程序集名称在发布模式下应为“MyApplication”,在调试模式下应为“MyApplicationd”。当我更改 Release\Debug 模式时,是否有任何机制可以在 UI 下自动更改它?
  • @Kaizen,在项目属性中手动编辑它是我能想到的解决方法,即使其他成员也考虑使用这种方式,我也不会使用构建后事件来实现它:stackoverflow.com/questions/208084/… ,但我认为手动编辑它很方便。
猜你喜欢
  • 2018-11-24
  • 2016-06-28
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2018-08-08
相关资源
最近更新 更多