2015-09-09 27 views
11

我正在使用Visual Studio 2015處理C#項目,並使用NuGet進行包管理。對於一個參考,我想臨時使用本地構建,而我正在迭代修補程序,而不是發佈的版本。什麼是實現這一目標的最佳方式?如何使用本地構建臨時替換NuGet引用

如果我使用的是外部SVN,我會將新建的本地拷貝放到外部引用的文件夾中並進行設置。其他軟件包管理軟件(如CocoaPods)將允許我指向本地目錄來解析引用。有了NuGet,它看起來沒有任何機制。

當我嘗試將我的新DLL放在packages文件夾內的軟件包引用上時,在Visual Studio中出現不一致的行爲。我的版本會失敗,出現數百個錯誤,其中大部分錯誤很快就會從錯誤列表中消失。我最終留下警告,告訴我它無法解析我想要替換的程序集的引用(儘管引用的屬性確實表明它正在查找我的新版本)。

+0

這聽起來像是一個[XY-問題】(http://meta.stackexchange.com/questions/66377/what-is-the-xy - 問題) - 爲什麼你想實現這一目標? –

+0

我試圖在我的應用程序中測試未完成的庫代碼,它會消耗它。由於尚未完成,因此我尚未準備好提交併發佈我的更改。 – Dov

+0

你知道,在SemVer之後,有一個本地存儲庫可以部分解決你的問題......提交beta-packages有什麼問題?儘管如此,我的確瞭解了額外的開銷(我也面臨着......) –

回答

4

您可以創建自己的NuGet飼料(簡單的本地文件夾+某些配置)

在這裏閱讀更多Hosting Your Own NuGet Feeds

+1

有沒有辦法切換到本地文件夾軟件包源,而不是從舊的卸載,然後重新安裝?這並非如此簡單,因爲我正在研究的解決方案中有20個項目,其中只有5個使用該庫。這不是不可逾越的,但煩人的。 – Dov

7

我發現下面的解決方法有用我:

首先,我禁用「NuGet包恢復「解決方案的上下文菜單中。

之後,我去包文件夾,並搜索我想要替換的包。從這個包我拿到版本號,並使用這個確切的版本號建立我想交換的DLL。

之後,我可以與這個新建立的dll交換包文件夾中的dll。建立該項目現在使用這個新的DLL。

建立一次之後,我可以輕鬆構建新的dll,並將它們複製到packages文件夾中。

+2

禁用「NuGet軟件包恢復」不是必需的 –

+0

這是一個偉大的,沒有大驚小怪的解決方案。爲我工作! – Dan

+0

我嘗試這樣做時出現錯誤 - 「Assembly {程序集路徑}必須經過嚴格簽名才能被標記爲先決條件。」 –