2012-07-17 82 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位應用程序。

相關問題