我正在研究VS2010 C#,我想添加一个在VS2008下编译的.dll引用;这个.dll存在两个版本:Debug和Release。
.dll不在.NET,COM或项目标签下,所以我只有“浏览器”标签将.dll添加到引用中。
我的问题是:当我在发布模式下编译时,如何向VS指示发布.dll版本,并在调试模式下编译时,如何获取调试.dll版本?
感谢。
答案 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的回答,我做了以下事情:
path\to\Debug\MyCode.dll
和path\to\Release\MyCode.dll
。Edit MyReferencingProject.csproj...
HintPath
元素中,将Debug
/ Release
更改为$(Configuration)
(因此它应为path\to\$(Configuration)\MyCode.dll
)。当你完成后,应该看起来像:
<Reference Include="MyCode">
<HintPath>C:\path\to\$(Configuration)\MyCode.dll</HintPath>
</Reference>