在Visual Studio中,当您在.csproj文件中添加对解决方案中现有项目的引用时,它会像这样结束:
<ProjectReference Include="..\TestProject2\TestProject2.csproj">
<Project>{15EC8369-B0C5-4F71-A366-19042F450A2D}</Project>
<Name>TestProject2</Name>
</ProjectReference>
如果我通过EnvDTE添加对程序集DLL的引用:
var p = _project as VsProject;
p.References.Add(<path to assembly DLL>);
它的结尾如下:
<Reference Include="TestProject2.csproj">
<HintPath>..\TestProject2\bin\Debug\TestProject2.csproj.dll</HintPath>
</Reference>
这不是很好,因为如果我切换到Release版本,它仍然会引用调试程序集。另一个问题是我必须先构建引用的程序集,然后才能将其添加为引用。使用Visual Studio UI,我可以添加对未构建项目的引用。
是否可以通过EnvDTE API添加项目参考?
我知道我可以将.csproj文件作为XML文档进行操作并做任何我想做的事情,但是自从我开始使用EnvDTE之后,我宁愿坚持下去。
答案 0 :(得分:5)
看起来References接口有AddProject方法处理项目到项目的引用。
答案 1 :(得分:0)
对我有用的是以这种方式制定参考文献:
<Reference
Include="MyDll"
Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<HintPath>..\..\somePath\Debug\myDll.dll</HintPath>
</Reference>
<Reference
Include="MyDll"
Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<HintPath>..\..\somePath\Release\myDll.dll</HintPath>
</Reference>
这样,发布构建引用了发布依赖关系,而调试构建引用了Debug。 当然,如果需要,也可以处理x86 / x64。这是一个32位应用程序。