如何使用“浏览器”选项卡在C#中包含正确的引用

时间:2010-05-18 17:31:57

标签: visual-studio-2010

我正在研究VS2010 C#,我想添加一个在VS2008下编译的.dll引用;这个.dll存在两个版本:Debug和Release。

.dll不在.NET,COM或项目标签下,所以我只有“浏览器”标签将.dll添加到引用中。

我的问题是:当我在发布模式下编译时,如何向VS指示发布.dll版本,并在调试模式下编译时,如何获取调试.dll版本?

感谢。

5 个答案:

答案 0 :(得分:12)

实施Brian解决方案的更好方法是这样做:

<Reference Include="AjaxControlToolkit">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>path/to/folder/bin/$(Configuration)/AjaxControlToolkit.dll</HintPath>
</Reference>

这将在Release和Debug之间很好地切换,而不会在References视图中显示两次。

答案 1 :(得分:3)

您可能需要手动编辑基础.csproj文件。大约如此

<Reference Condition=" '$Configuration'=='Debug' " 
           Include="path\to\Debug\Foo.dll" />
<Reference Condition=" '$Configuration'=='Release' " 
           Include="path\to\Release\Foo.dll" />

(可以通过浏览轻松添加对调试版本的引用,然后右键单击解决方案资源管理器中的项目,单击“卸载项目”,然后再次右键单击“编辑your.csproj”,将上面建议的编辑内容添加到刚刚添加的Foo.dll,然后右键单击“重新加载项目”。)

修改

为防止在VS中看到两个副本,可能是

<Reference debugstuff as before>
    <Visible Condition=debugcond>true</Visible>
    <Visible Condition=releasecond>false</Visible>
</Reference>
and same for release

即,根据条件有条件地将参考节点下的Visible元数据设置为true / false。我没有试图知道它是否有效。

答案 2 :(得分:1)

标准方法是将项目添加到解决方案中。然后它完全是自动的。

答案 3 :(得分:1)

我们找到了一些理想的方法来应对这种情况。 首先,将库文件发布到三个特殊文件夹: $(配置)\ MyLibrary.dll 调试\ MyLibrary.dll 释放\ MyLibrary.dll

然后在你的应用程序中,引用'$(Configuration)\ MyLibrary.dll'。 完成了!现在您更改了解决方案配置,dll将自动更新。

答案 4 :(得分:0)

离开@Kevin Yang的回答,我做了以下事情:

  1. 构建为path\to\Debug\MyCode.dllpath\to\Release\MyCode.dll
  2. 在VS中引用其中一个(使用“浏览”选项卡)。
  3. 卸载引用DLL的项目。
  4. 右键单击已卸载的项目,然后单击Edit MyReferencingProject.csproj...
  5. 找到引用,并在HintPath元素中,将Debug / Release更改为$(Configuration)(因此它应为path\to\$(Configuration)\MyCode.dll)。
  6. 冲洗/重复(使用任何其他类似的DLL)。
  7. 当你完成后,应该看起来像:

    <Reference Include="MyCode">
      <HintPath>C:\path\to\$(Configuration)\MyCode.dll</HintPath>
    </Reference>