2017-08-28 152 views
0

一個NuGet包發佈了很多很多程序集。不需要在Visual Studio中的*.csproj中引用NuGet程序包中的所有程序集。 Visual Studio如何確定要引用哪個程序集?這是在nuget.exe中的邏輯還是在一些NuGet API中?visual studio如何知道NuGet包中的哪些程序集可供參考?

+0

你是什麼意思「不需要引用」?你指的是計算傳遞依賴的新的csproj格式嗎? –

+0

@MartinUllrich爲了清晰起見,我編輯了這個問題。 – rasx

回答

2

Visual Studio如何確定要引用哪個程序集?這是在nuget.exe中的邏輯還是在一些NuGet API中?

此確定應該是Visual Studio中nuget.exe和NuGet API的組合。 Visual Studio使用NuGet.exe下載軟件包,然後使用NuGet API in Visual Studio將相應的程序集安裝到項目中。

首先,當使用基於約定的工作目錄時,NuGet支持將同一庫的多個版本放在一個包中。因此,我們將使用不同的區分大小寫的框架名專門針對lib下與子文件夾的多個框架:

lib\{framework name}[{version}] 

然後,我們將使用的NuGet API在Visual Studio安裝程序包到項目,它試圖比賽程序集框架名稱與項目目標框架

此外,Visual Studio的NuGet包管理器是nuget.exe和nuget API的組合實例,因此Visual Studio知道NuGet包中的哪些程序集可供引用。

有關更多詳細信息,請參閱NuGet文檔Supporting multiple .NET framework versions

+0

如果你想要「更正確」,那麼當你不希望'lib /'中的所有東西被引用或誘餌和開關包時'ref /'文件夾。 –

+0

你的答案有指示我在這裏:https://github.com/NuGet/Home/issues/3062 – rasx

+0

scriptcs人寫道這沒有Visual Studio的擔憂:https://github.com/scriptcs/scriptcs/blob/76ec57b642be836eaa7fd2a9ffa10fb1f9a60eae/src/ScriptCs。主機/封裝/ NugetInstallationProvider.cs – rasx

相關問題