2017-08-03 109 views
1

這裏是我的.csproj的一部分:的Visual Studio不會在Solution Explorer中顯示來自對象的引用

<Project DefaultTargets="Build" InitialTargets="MyTarget" xmlns="..."> 
<Target Name="MyTarget" DependsOnTargets="Include_Ver1;Include_Ver2"/> 

<Target Name="Include_Ver1" Condition="..."> 
    <ItemGroup> 
     <COMReference Include="Ref">  
     1st_Version 
     </COMReference> 
    </ItemGroup> 
    </Target> 

<Target Name="Include_Ver2" Condition="..."> 
    <ItemGroup> 
     <COMReference Include="Ref">  
     2nd_Version 
     </COMReference> 
    </ItemGroup> 
    </Target> 

我可以使用庫函數和項目建立正確的,但參考沒有出現在「參考」塊在visual studio解決方案資源管理器中我如何強制目標中的Intellisense解析引用?

回答

1

嘗試用不同的參考文獻及以下hintpath,特定版本節點elements.Make確保* .csproj的不光寫在任何版本控制系統,如SVN,因爲等

<ItemGroup> 
    <Reference Include="Microsoft.CSharp" /> 
     <Reference Include="Microsoft.Owin, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
      <SpecificVersion>False</SpecificVersion> 
      <HintPath>..\..\Microsoft.Owin.dll</HintPath> 
     </Reference> 
    </ItemGroup> 
1

VS不顯示它們解決方案資源管理器基本上顯示瞭解析項目文件後得到的結果。解析!=正在執行,因此添加到目標中的引用不會被看到,因爲它從不執行 - 這是有道理的,VS無法猜測目標是否會被執行,它不能只是開始執行隨機構建來判斷引用將被添加。

你真的需要一個目標嗎? ItemGroups也可以有條件,也許這對你已經足夠了?

<ItemGroup Condition="..."> 
    <COMReference Include="Ref">  
    1st_Version 
    </COMReference> 
</ItemGroup> 
+0

如果所有條件都爲false,則Visual Studio將顯示帶有警告標誌(版本爲0.0.0.0)的引用。 「選擇」塊效果很好,但此標籤中的「標籤」屬性會引發錯誤(儘管Visual Studio儘可能顯示該屬性)。 我在我的vsix中使用了這個屬性來進行.csproj操作,所以我需要更難的分析來確定從vsix生成的「Choose」塊。從此[鏈接](https://msdn.microsoft.com/en-us/library/ms171468.aspx?f=255&MSPPError=-2147217396)設計時執行目標:我不明白,我應該如何編寫目標視覺工作室。 –

+0

要麼你不使用目標,VS顯示參考,要麼使用目標,但VS不顯示參考。沒有其他辦法(據我所知)。 – stijn

相關問題