2017-06-20 155 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的问题是最近解决了。 –

相关问题