【问题标题】:C# / VS2008: Add separate debug / release references to a projectC#/VS2008:向项目添加单独的调试/发布引用
【发布时间】:2019-04-27 04:55:25
【问题描述】:

向 VS 2008 C# 项目添加用户控件或项目引用时,我只能添加程序集的一种配置。是否可以添加单独的配置,具体取决于容器项目的配置。

例如我正在开发一个用户控件,并且正在开发一个示例应用程序。我想添加用户控件,以便示例的调试版本将使用用户控件的调试版本,而示例的发布版本将使用用户控件的发布版本。

有什么建议吗?

【问题讨论】:

    标签: c# visual-studio-2008 project


    【解决方案1】:
    <Reference Include="MyLibrary">
      <HintPath>..\$(Configuration)\MyLibrary.dll</HintPath>
    </Reference>
    

    如果在调试模式下编译,则添加引用“..\Debug\MyLibrary.dll”,如果在发布模式下编译,则添加引用“..\Release\MyLibrary.dll”。

    【讨论】:

    • 很好的答案 + 使用相对路径,因为 dll 可能位于解决方案之外的文件夹中。
    • 而且 Visual Studio(在我的例子中是 VS2010)似乎很有礼貌,并且当后来从 IDE 修改项目文件时,它不会干扰这种手动编辑。作为测试,我添加了一个新类,一切正常。
    【解决方案2】:

    您可以通过编辑 csproj 文件来做到这一点;为引用添加“条件”属性。

    <Reference Include="Foo" Condition="'$(Configuration)'=='Debug'"/>
    <Reference Include="Bar" Condition="'$(Configuration)'=='Release'"/>
    

    但是,我会担心这对单元测试意味着什么。

    【讨论】:

    • 问题即将使用相同的UserControl,通过这种方式我们不能添加对两次的引用,Visual Studio 不允许它@Salvatore Previti 回答最好的一个。
    【解决方案3】:

    虽然@Marc Gravell 的建议可行,但您是否有理由不希望两个项目在同一个解决方案中?如果它们在同一个解决方案中,您可以在将用户控件项目引用到示例应用程序的项目时添加项目引用。使用项目引用时,Visual Studio 将自动为 Debug 构建添加 Debug 版本,为 Release 构建添加 Release 版本。

    【讨论】:

    • 如果引用的项目单独在源代码管理下(可能是通用库项目),则在尝试将引用项目添加到源代码管理时可能会出现问题。
    【解决方案4】:

    不要直接添加对 .dll 的引用,这会迫使您在调试或发布文件夹中的 .dll 之间进行选择,您应该通过选择“项目引用”来添加引用。 This link 解释了如何通过 .dll 与 project-project 引用添加引用。出于您的目的,您应该选择后者。

    另请参阅 my answer 以了解何时将引用添加为 .dll 与将引用添加为项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-24
      • 2015-09-23
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多