如何根据配置添加程序集引用

15

我目前正在寻找方法向Windows Phone项目添加一些仅用于调试的代码。这些调试代码将会引入一些调试类库引用(nunit helpers)和一些WCF服务客户端引用,我真的不希望在发布版本中出现这些引用。

有人能建议我如何添加一个只在调试时才出现的程序集引用吗?

我在Connect上看到过这个问题 - https://connect.microsoft.com/VisualStudio/feedback/details/106011/allow-adding-assembly-references-on-a-per-configuration-basis-debug-release - 但它被标记为“已推迟”

在Visual Studio的UserVoice上有一个请求,但它被标记为关闭,因为不会修复https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/2062487-allow-assembly-references-to-switch-based-on-confi


哦,好问题。也许可以通过一些 MSBuild 的技巧来实现? - Jeremy McGee
我认为你可能需要两个项目文件,不幸的是。 - Ray
2个回答

16

使用 MSBuild 的两种情况下的 Condition,你只需要一次配置 csproj 文件即可忘记它。

第一种情况: 使用 Condition

  1. 创建新项目 DebugOnlyHelpers。
  2. 在该项目中引用所有与 Debug 特定帮助程序有关的内容。
  3. csproj 文件中指定一个条件来过滤引用:

<ProjectReference 
            Include="DebugOnlyHelpers.csproj"
            Condition=" '$(Configuration)' == 'DEBUG' "

第二:使用ConditionChoose/When一起:

<Choose>
    <When Condition=" '$(Configuration)'=='DEBUG' ">
        <ItemGroup>
             <Reference Include="NUnit.dll" />
             <Reference Include="Standard.dll" />
         </ItemGroup>
    </When>
    <Otherwise>
         <ItemGroup>
             <Reference Include="Standard.dll" />
         </ItemGroup>
    </Otherwise>
</Choose>

谢谢你!我点了个赞(+1)。我正在测试,希望很快可以回来打钩 :) - Stuart
这里是一个更新的链接,指向选择/当 - bcr

-5

很遗憾,目前还没有办法做到这一点。您需要切换到调试模式并删除引用,然后在返回发布模式时重新添加它。


2
我不知道 MSBuild 的解决方案,但在 Visual Studio 本身中肯定没有干净的方法来做到这一点。 - Polynomial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接