通过EnvDTE以编程方式在C#中添加项目引用(而不是程序集引用)

Pyr*_*bie 2 c# project-reference visual-studio-2010 envdte

在Visual Studio中,当您在.csproj文件中添加对解决方案中现有项目的引用时,它最终会如下所示:

<ProjectReference Include="..\TestProject2\TestProject2.csproj">
  <Project>{15EC8369-B0C5-4F71-A366-19042F450A2D}</Project>
  <Name>TestProject2</Name>
</ProjectReference>
Run Code Online (Sandbox Code Playgroud)

如果我通过EnvDTE添加对程序集DLL的引用:

var p = _project as VsProject;
p.References.Add(<path to assembly DLL>);
Run Code Online (Sandbox Code Playgroud)

它像这样结束:

<Reference Include="TestProject2.csproj">
  <HintPath>..\TestProject2\bin\Debug\TestProject2.csproj.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

这不是很好,因为如果我切换到Release版本,它仍然会引用调试程序集.另一个问题是我必须先构建引用的程序集,然后才能将其添加为引用.使用Visual Studio UI,我可以添加对未构建项目的引用.

是否可以通过EnvDTE API添加项目引用?

我知道我可以将.csproj文件作为XML文档操作并做任何我想做的事情,但是自从我开始在EnvDTE的路径上,我宁愿坚持下去.

Jim*_*mmy 5

看起来References接口有一个AddProject方法,它处理项目到项目的引用.