如何为不同的配置使用不同的程序集名称?

Mar*_*ram 11 .net visual-studio-2008

在Visual Studio 2008(和其他人)中,如果查看项目属性,在创建.NET或Silverlight应用程序时,似乎只能有一个程序集名称 - 跨所有配置.我想将我的应用程序编译为:

MyAppDebug - 处于调试模式,只是MyApp - 处于发布模式

有谁知道这是否可能?

编辑:

似乎有些人质疑这个问题背后的推理,所以我会进一步解释一下:

我正在开发一个Silverlight应用程序,当我进入"构建解决方案"时,它会自动上传到我们的测试站点.麻烦的是,测试团队正在测试在线版本,而我正在开发一个新版本.所以,我希望有一个类似.\ MyApp.html的网址,用于QA团队将测试的常规版本,然后.\ MyApp.html?version = debug用于我正在处理的当前版本.

Rom*_*kov 13

我通过弄乱.csproj文件来做到这一点:要么将属性移动到特定于配置的属性组中,要么只使用Condition.例:

<AssemblyName>MyApp</AssemblyName>
<AssemblyName Condition=" '$(Configuration)' == 'Debug' ">MyAppDebug</AssemblyName>
Run Code Online (Sandbox Code Playgroud)

当你开始像这样使用.csproj时,Visual Studio变得有点瘫痪 - 例如我不能再用F5/F10在Debug模式下运行项目了; 它告诉我找不到"MyApp.exe"(即调试器尝试使用错误的AssemblyName启动程序集).

  • 未经测试,但我认为如果您将第一行设置为与第二行相反的条件,您的调试问题可能会消失。当 Visual Studio 找到第一个有效的 AssemblyName 时,它​​可能会停止解析 AssemblyName。 (2认同)
  • 我测试过CAD哥的假设,它是完全正确的。切换顺序(或者更一般地说,将任何条件语句放在前面)将修复“MyApp.exe”未找到错误。一旦 Visual Studio 找到有效的 AssemblyName,它就会忽略后面的任何内容。 (2认同)

Mar*_*ram 1

我已经通过使用构建后脚本成功实现了我所追求的目标:

if "$(ConfigurationName)"=="Debug" goto debug
"$(SolutionDir)ftp.bat" "$(TargetDir)$(TargetName).xap"
:debug
"$(SolutionDir)ftp.bat" "$(TargetDir)$(TargetName).xap" "$(TargetDir)$(TargetName)Debug.xap"
Run Code Online (Sandbox Code Playgroud)

我的 ftp 脚本基本上在末尾接受一个可选参数,该参数是上传文件的参数。因此,在我的本地计算机上,文件名始终相同,但在调试模式下,我们在文件名末尾添加“调试”来上传它。现在我可以在网页中选择要显示的版本。