debugging 在Visual Studio 2019中使用基于配置的不同assemblyName进行调试

v64noz0r  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(184)

我继承了一个相当复杂的解决方案的维护,它基于#define标志来改变它的功能。然后根据需要在不同的构建配置中设置这些标志。代码是用C#编写的,改编自早期的C++解决方案,目前最好重写整个代码,但这是不可行的。
在我到达之前,我的同事不得不在项目的属性窗口中手动分配程序集名称和图标。由于我很懒,喜欢尽可能少地做一些愚蠢的工作,我只是根据.vcproj文件中的活动配置定义了各种名称,如下所示:

<AssemblyName Condition="'$(Configuration)' == 'Debug' ">DevelopmentManager</AssemblyName>
    <AssemblyName Condition="'$(Configuration)' == 'Release' ">DevelopmentManager</AssemblyName>
    <AssemblyName Condition="'$(Configuration)' == 'Service Release'">ServiceManager</AssemblyName>
    <AssemblyName Condition="'$(Configuration)' == 'Service Debug'">ServiceManager</AssemblyName>
    <AssemblyName Condition="'$(Configuration)' == 'SERVICE_LIGHT DEBUG'">ServiceLoader</AssemblyName>
    <AssemblyName Condition="'$(Configuration)' == 'Service Light Release'">ServiceLoader</AssemblyName>

(the图标遵循相同的逻辑)。
一切都按预期工作,每个配置都用自己的特定名称构建,但我仍然有一个问题:
在vcproj中,我没有设置通用程序集名称或图标,假设它会根据需要选择正确的名称,但当我尝试调试应用程序时,VS2019有时会尝试获取错误的文件名。即,如果我正在调试应构建到ServiceManager.exe VS中的Service Debug配置,而不是查找DevelopmentManager.exe(或者另一个,这不是重点。我假设它以某种方式采用最后构建的或类似的内容),如果我转到属性窗口,我可以看到程序集名称确实是DevelopmentManager。
因此,简单地说,我如何告诉Visual Studio “请使用正确的程序集名称调试我的应用程序”,而不必在项目文件属性窗口中手动更改它?

rxztt3cl

rxztt3cl1#

目前的解决方案是由Hans Passant发布的:选择所需的配置,关闭并重启VS2019,一切正常。
我没有可用的VS2022安装,所以我不知道这是否仍然适用于新版本。

相关问题