2017-06-20 157 views
4

我正在使用Visual Studio 2017構建.net 4.5類庫dll。如何使用Visual Studio 2017創建Nuget包

我想打包這個DLL,以及一些相關的文件夾的JavaScript,HTML,CSS和類似文件作爲NuGet包。

不幸的是,我不知道從哪裏開始 - 我可以找到創造NuGet包只說明適用於Visual Studio 2015。我被告知NuGet包含在Visual Studio 2017中,但是如果我打開Developer Command Prompt for VS 2017,並鍵入Nuget,則找不到該命令。

我覺得Visual Studio 2017可以在.Net標準項目中創建NuGet包,但不能在其他類型的項目中創建。

我應該回到Visual Studio 2015,還是什麼?

+0

簡單說明在這裏:https://www.jweiler.com/create-nuget-packages-with-vs-2017/ – RenniePet

回答

6

這裏有幾個明顯的問題:

關於VS集成:在VS 2017年<通常的NuGet是可以單獨更新的擴展。在VS 2017中,擴展通過對VS本身的更新進行緊密集成和更新。這從來不包括通常用於打包和推送包的命令行nuget.exe - 此命令行客戶端可從NuGet's download page獲得。

打包.NET項目的「經典」方法仍然有效,記錄在nuget's documentation page中,尤其重要的是"Creating the .nuspec file … from a Visual Studio project"

VS 2017還引入了一種新型的項目,它使用從.NET Core工具發展而來的「.NET Sdk」。這些項目與NuGet集成,可以通過VS打包,也可以直接從MSBuild/dotnet pack打包。此項目類型也可用於創建.NET Framework NuGet包。但是,VS中沒有模板,因爲沒有實現可用於傳統.NET項目的某些功能(例如,用於xaml,edmx的Designers)。但對於大多數邏輯庫,你可以創建一個.NET標準項目和編輯的csproj文件來改變

<TargetFramework>netstandard1.6</TargetFramework> 

<TargetFramework>net461</TargetFramework> 

所以該項目將面向.NET 4.6.1(其他版本可能) 。該項目將具有與.NET Standard和.NET Core項目相同的集成包裝功能。您可以按照指南"Create .NET Standard Packages with Visual Studio 2017"進行操作,但是在創建項目文件後將其更改爲項目文件。

爲了包括物品放入包中,你可以使用下面的元數據:

<ItemGroup> 
    <Content Include="**\*.txt" Pack="true" /> 
</ItemGroup> 

這將文件放入到無論是在產生的NuGet一個contentcontentFiles目錄。當所得包通過ProjectReference消耗的contentFile需要額外的元數據屬性,以確保該引用的項目複製到它的輸出上生成:

<ItemGroup> 
    <Content Include="**\*.txt" Pack="true" PackageCopyToOutput="true" /> 
</ItemGroup> 

此屬性然而僅在即將到來的VS 2017年支持15.3更新/ .NET Core SDK 1.1/2.0(在撰寫本文時尚未發佈)。

+0

Nuget下載頁面特別說NuGet包含在VS2017中,所以我不明白爲什麼它不是。聲明當然讓我下載了命令行版本(我認爲它必須適用於VS的早期版本)。我沒有看的NuGet文檔頁面,並將其交給我https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package,開始關閉的告訴我安裝VS 2015!你可以看到我感到困惑。 –

+0

我有一點點一路下跌創建NET標準的項目,並將其重定向到NET4.5的路線,但我剛纔的問題在https://stackoverflow.com/questions/44498659/how-do-you-add-附加文件到一個nuget-package-in-visual-studio-2017/44660029#44660029說明,關於如何將其他文件添加到包中的文檔很少或沒有(並且理想地將它們標記爲在編譯引用項目時複製到輸出目錄)。 –

+0

添加了關於內容文件的段落。最後一步是不是在釋放部尚然而:(,我已經申請了它https://github.com/NuGet/Home/issues/5259其GitHub的問題是最近解決了。 –

相關問題