2012-12-30 63 views
4

我一直在使用NuGet來管理我內部創建的程序集幾個月,並且它工作得很好。我最近'發現'了可移植類庫,這也很棒 - 直到安裝包的時候。NuGet和可移植類庫 - 程序包沒有針對任何框架

假設我有一個針對Windows應用商店的.NET 4.5,SL5和.NET的PCL。我運行nuget spec來創建.nuspec文件,編輯值,打包並將.nupkg添加到我們的內部源。如果我在Package Explorer中打開.nupkg文件,我會在lib下面看到一個名爲portable-win + net45 + sl50的內容文件夾。

當我試圖從另一個解決方案兼容的任何項目安裝包,我得到以下信息:

「‘Project.PCL’無法安裝,因爲它不與溶液中的任何項目兼容。這個軟件包沒有針對任何框架。「

如果我在包資源管理器中手動創建.nupkg,更新版本號,爲每個目標框架(不是可移植文件夾)添加一個lib文件夾並將Project.PCL.dll添加到每個文件夾,我可以添加該軟件包提供給解決方案中的兼容項目。但是每次我想要更新PCl時都要執行這個過程,這有點乏味(我一直在項目根文件夾中創建一個.cmd文件來快速打包和部署)。

其他人有這個問題嗎?我如何以與其他類型的項目相同的方式打包PCL?

注意 - 我使用VS 2012旗艦版和2.2的NuGet

回答

2

聽起來也許nuget spec並不適用於便攜式類庫的工作 - 這是值得入手一個線程或在NuGet site提交的問題。

但是,您也可以從NuGet包資源管理器中創建.nuspec文件。只需按照以前的方式創建包,然後選擇「將元數據另存爲...」將其保存爲.nuspec。之後,您可能需要手動編輯nuspec文件中的源代碼路徑,但您應該能夠自動創建程序包。

+0

非常感謝您的幫助更新,我沒有意識到我可以手動添加文件到nuspec。 – Alyce

1

對我來說nuget spec和nuget pack在可移植項目中工作良好,同時創建包並將其安裝在兼容的項目上。
你想檢查是否有最新的nuget.exe(2.2),它可以從http://nuget.org/nuget.exe下載或通過運行的NuGet更新-self

+0

我檢查過,我確實有NuGet 2.2。您使用什麼過程來創建包? – Alyce

+0

從項目文件夾中的命令提示符,我做nuget規範,然後運行nuget包。你可以在你從命令行創建的地方分享你的nuget包嗎?我可以試試看嗎? – Deepak

+0

我創建了一個面向.NET 4.5,SL5和Windows Store應用程序的套件,運行了nuget規範和nuget pack。我無法通過Visual Studio將該軟件包安裝到任何項目中。這裏是[SkyDrive]上的軟件包(https://skydrive.live.com/redir?resid=76DC2E460C575501!115&authkey=!AO6RVZrj_Y3Ym0o) – Alyce