从Visual Studio 2013创建NuGet包

14

我已在VS2013上安装了NuGet.Tools.2013.vsix。我想从管理控制台创建一个nuget包,但是当我尝试时,我收到以下消息:

'nuget'一词不被识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我不知道我做错了什么。

是否可以使用管理控制台创建软件包,还是需要使用其他工具?

5个回答

8

我不太确定我完全理解这个问题,但如果你正在使用Visual Studio中的包管理器控制台,则无需在该窗口中以nuget开头启动命令。 我通常使用包管理器控制台为我的当前解决方案安装/更新软件包。 例如:

Install-Package Nunit

通常情况下,您可以通过在Windows命令行中调用NuGet来创建软件包,例如:
nuget pack Library.csproj

请访问 http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package 以获取更多信息。


尝试了那个链接,但是Pack Library.nuspec无法工作。我们如何在不安装另一个程序和更改路径变量的情况下创建NuGet包? - MrFox
1
问题是如何从 NPC 打 nuget 包。答案不能是“不要使用 NPC,使用 Windows CLI”。 - Suamere

6
NuGet Package Manager Console并没有暴露任何命令以便在Visual Studio内创建NuGet包。同时,你也不能使用nuget.exe命令,因为你没有在PowerShell已启用的控制台中与NuGet Command Line交互(除非你通过创建别名等方式,使NuGet PowerShell profile了解硬盘上的nuget.exe的位置)。然而,我已经为你创建了一个NuGet包,如果你希望在Visual Studio内创建NuSpec文件(包括IntelliSense),可以安装该包。更多信息请访问我的博客:http://www.xavierdecoster.com/install-nuspec-with-intellisense
这将使你更容易地编写NuGet manifest文件,但是它仍然不能创建实际的包。对于这一点,你需要回退到nuget.exe命令行工具,该工具可以从https://nuget.org/nuget.exe下载。文档可以在NuGet Docs网站上找到。

2

0
请确保在%PATH%的某个地方有nuget.exe注意:我们使用Jenkins,并需要EnvInject以在构建过程中使%PATH%变量可用。
编辑您的.csproj文件,以包含一个新的宏变量来获取程序集版本号,请参见Determine Assembly Version during a Post Build Event?
<Target Name="PostBuildMacros">
  <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
    <Output TaskParameter="Assemblies" ItemName="Targets" />
  </GetAssemblyIdentity>
  <ItemGroup>
    <VersionNumber Include="@(Targets->'%(Version)')"/>
  </ItemGroup>
</Target>
<PropertyGroup>
  <PostBuildEventDependsOn>
    $(PostBuildEventDependsOn);
    PostBuildMacros;
  </PostBuildEventDependsOn>    
  <PostBuildEvent>echo HELLO, THE ASSEMBLY VERSION IS: @(VersionNumber)</PostBuildEvent>
</PropertyGroup>

使用以下的后置构建脚本,当程序集版本已更改并需要新的 .nupkg 时,部署新包:
IF "$(ConfigurationName)" == "Release" (
  CD /D $(ProjectDir)
  IF EXIST $(TargetName).@(VersionNumber).nupkg EXIT
  nuget pack $(ProjectPath) -Properties Configuration=$(ConfigurationName)
  nuget push $(TargetName).@(VersionNumber).nupkg -s http://mynugetserver
)

0

这是旧的内容,但我一直在寻找这些信息。我将http://docs.nuget.org/create/creating-and-publishing-a-package上的信息与我从“程序包管理器控制台”中获得的信息相结合。

我通过以下步骤从程序包管理器控制台创建了规范和程序包:

cd <projectFolder>
../.nuget/nuget spec

将 <projectFolder> 替换为项目文件的路径。

这将在项目文件夹中创建一个规范。(.nuspec 文件)

然后根据需要编辑这个新创建的文件。一些信息似乎是从 AssemblyInfo 文件中提取的,因此您可能还需要编辑该文件。

然后

../.nuget/nuget pack <projectFileName.csproj>

将 <projectFileName.csproj> 替换为您的项目文件名。(我猜vb项目应该是 .vbproj)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接