2013-11-01 120 views
1

我試圖自動將NuGet包添加到沒有安裝Visual Studio(或任何構建服務器)的遠程服務器上的項目。我知道如何從我的C#代碼中使用NuGet.exe,但是這個可執行文件只下載軟件包,並且不執行任何其他必需的工作(添加引用,執行ps腳本等)。我爲了完全安裝一個軟件包該怎麼做?在沒有Visual Studio的情況下將NuGet包添加到項目中

注意:我不需要爲我自己的應用程序更新軟件包,我需要將軟件包添加到服務器上的任意.csproj文件中。我正在構建一個基於Web的.Net IDE,並且需要我的用戶能夠將軟件包添加到他們的項目中。

我看到兩種可能性:一種是使用NuGet.exe中不存在的某種功能,而是使用某種其他庫(也許是VS插件),但我不知道在哪裏尋找它。另一種是模擬某種NuGet Powershell控制檯並向它發送命令,但是我不知道該怎麼做。

+0

要求我的用戶能夠將軟件包添加到他們的項目中_,您是什麼意思? –

+0

用戶應該能夠在線創建一個項目並添加Nuget包,就像在Visual Studio中一樣。 – ulu

回答

0

我最終使用NuGet.Core庫中的ProjectManager類。如果有人有興趣,我會發布我的解決方案。

+0

請發佈它 –

+0

請訪問http://ivonna.biz/blog/2014/9/21/installing-a-nuget-package-programmatically.aspx – ulu

1

你可能要考慮SharpDevelop

Installing NuGet Packages outside of Visual Studio你正在努力實現的(由馬特·沃德,該項目的貢獻者之一寫入)功能的一篇文章說:

由於的NuGet使用PowerShell的最簡單的方法是延長 現有的PowerShell命令包含在SharpDevelop中。現在,您可以編寫幾行PowerShell腳本將NuGet程序包安裝到 之前從未有過的NuGet程序包的項目中,讓項目 本身更新並運行任何程序包PowerShell腳本。所有這些來自 未打開Visual Studio的命令行。

+0

我認爲這應該順便說一句。 – websch01ar

+0

這一定是我正在尋找的人。唯一的問題是,我無法加載Cmdlet包 - PowerShell一直在拋出FileLoadException。儘管如此,如果我只能從.Net代碼直接調用它,那甚至會比執行PS命令更好。那麼,我如何從.Net調用它? – ulu

0

只是添加一個附加答案與Alex的帖子關於SharpDevelop的內容,你有幾個不同的選擇。

  • 使用Nuget.exe(Related Blog post
  • 的NuGet外接了MonoDevelop的和Xamarin工作室(見GitHub)使用WebMatrix中
  • ASP.NET頁面(請參閱本video

所有這一切信息來自Nuget FAQ

+0

Nuget.exe是我開始使用的,但它只是下載軟件包,它不會修改項目文件,也不會執行任何其他必需的操作。至於各種插件,請記住,我需要一個託管在沒有安裝IDE的服務器上的項目。 – ulu

+0

我按照你的建議使用了NuGet.exe,並附加了一些代碼,請參閱http://ivonna.biz/blog/2014/9/21/installing-a-nuget-package-programmatically。aspx – ulu

相關問題