项目引用问题

手头上一个项目使用了混合语言编程:C# 和C++,由 C++ 输出 DLL 供 C# 使用,但是遇到一个问题。在 C# 中要添加 C++ 的 DLL 引用,通过菜单“引用”->“添加引用”->“浏览”找到 C++ 的 DLL,正确地添加了进来;但是项目的生成方式有两种:Debug 模式和 Release 模式,上述方法添加的 DLL 路径是静态的,即只能是 Debug 或 Release 某一种生成版本的,如果改变解决方案的生成方式,就要每次手动更改引用,非常不方便。于是 google 之,找到 CompilerParameters::ReferencedAssemblies.Add 方法,貌似可以在代码中添加引用,而不是通过菜单方式,然后使用

#ifdef _DEBUG

添加Debug版DLL引用

#else

添加Release版DLL引用

#endif

,但把上述代码放在何处是个问题,最后发现此路不通;继续 google,发现了解决办法,特记录在此:

1.   通过菜单“引用”->“添加引用”->“项目”,而不是“浏览”,这样DLL引用的版本就能随解决方案生成方式的改变而自动改变,即DLL路径是非静态的。

2.   由于添加的引用实际上是记录在项目文件 *.csproj 中,所以可以通过改变此文件中的内容来改变引用路径。首先找到 DLL 引用位置,类似于 <Reference Include="…,<HintPath>..\Debug\××××.dll</HintPath>,然后将 Debug (或Release)修改为 ${Configuration} ,即解决方案的生成方式。

3.   此方法要用到命令行,较为麻烦,见

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/5d97d887-c16a-4488-a438-d49945c04e06/

4.   另见

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/faa47a6d-3f32-45a5-9865-458fc9486de9/

posted @ 2011-05-20 23:40  深蓝记忆  阅读(295)  评论(0编辑  收藏  举报