2012-07-17 106 views
2

(而不是一个集引用)在Visual Studio中,当您在您的解决方案中添加一个引用到现有项目的.csproj文件,它结束了,像这样:编程方式添加在C#项目引用通过EnvDTE

<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的路径之后,我更愿意坚持使用它。

回答

5

它看起来像References接口有一个AddProject方法来处理项目到项目的参考。

+0

我相信你也可以通过提供项目名称来添加一个带有Add.References项目的引用。请参阅http://blogs.msdn.com/b/murat/archive/2008/07/30/envdte-adding-a-refernce-to-a-project.aspx – 2012-07-17 20:34:03

+1

不,它不起作用。 – 2012-07-18 04:00:01

+1

获取此错误。 http://msdn.microsoft.com/en-us/library/ms228768(v=vs.110).aspx试过解决方案仍然无法做到这一点。 – iamCR 2014-03-10 10:25:42

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> 

这种方式,发布版本的引用释放的依赖,和调试构建引用调试。 当然,如果需要也可以处理x86/x64。这是一个32位应用程序。

相关问题