當試圖添加對VSIX的引用時,它通常將其從.csproj中的引用中引出。但是,如果引用不在.csproj中,因爲它們現在位於project.json文件中,那麼它們不會被拉到vsix。解決方案然後可以編譯,但是當擴展安裝到Visual Studio中時(因爲沒有複製到VSIX的程序集),擴展失敗並顯示「文件未找到」錯誤。將project.json軟件包引用添加到VSIX
我試着用清單的,像這樣的部分:
<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="*PROJECTNAME*" Path="|*ASSEMBLYNAME*|" AssemblyName="|*ASSEMBLYNAME*;AssemblyName|" />
但它不工作,因爲它不能識別包引用。
經過一番研究,我看到了一個類似的問題與PCL,但是,如果沒有一個答案,而不是同一類型的問題:MEF With Portable Class library using Microsoft Composition MEF2 throws file not found exception
在同一個音符,這似乎是一個可以接受的解決方法:VSIX with Project Templates and NuGet Packages然而,由於據我瞭解,這意味着在安裝過程中使用該軟件包。除此之外,它不適用於我們的情況,因爲他們需要指定包版本,我們正在使用project.json,所以我們可以使用浮動版本(即:2.0。*)
有沒有辦法引用這個project.json引用我們失蹤?也許是一種解決方法?我發現的解決方案似乎都需要在某處「粘貼」de DLL,這對於浮動版本來說並不方便。
在此先感謝您的幫助或意見。
編輯/更新:由於VSIX自動將在引用的csproj任何組件(而不是項目本身),試圖在項目層面得到的DLL似乎不太可能。經過多次嘗試,我認爲有效的解決方法是從輸出文件夾中獲取程序集。然而,就我所知,VSIX沒有辦法做到這一點,或者它呢?
它的奇怪,這是得到這麼多upvotes。不應該在這裏解決這個問題:_不是首先使用project.json? project.json在接下來的幾個月裏將會被拋棄,微軟將開始着手將project.json的功能轉移到老式的csproj中。你爲什麼使用project.json?你需要在Visual Studio擴展上使用dotnet核心嗎?怎麼樣?爲什麼?這麼多的問題! – Joao
[在我之前的評論中有過這種情況,我刪除了]在我們的例子中,我們試圖解決VS 2015 update 3使用比Roslyn老的版本System.Collections.Immutable的事實,所以我們遇到了這個文章解釋如何將該程序集的版本降級到1.1.37,以便構建使用Roslyn的擴展。此時,我們開始遇到DLL未與VSIX軟件包一起部署的問題,並發現這個SO問題與相同的情況。 – fussmonkey
FWIW我聽說project.json正在恢復到project.xxproj - 請參閱此博客文章https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/ –