从Visual Studio 2013创建nuget包

AFe*_*ter 14 visual-studio nuget

我在VS2013上安装了NuGet.Tools.2013.vsix.我喜欢从Manager Console创建一个nuget包,但是当我尝试时,我得到一个menagem:

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

我不知道我做错了什么.

可以使用管理器控制台创建包,或者我需要使用其他东西.

小智 8

我不确定是否完全理解这个问题,但是如果您在Visual Studio中使用Package Manager控制台,那么您不需要在该窗口中使用nuget启动命令.我通常使用程序包管理器控制台来安装/更新当前解决方案的程序包.例如:

Install-Package Nunit
Run Code Online (Sandbox Code Playgroud)

通常,您可以通过从正常的Windows命令行调用nuget来创建包,例如:

nuget pack Library.csproj
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package.


Xav*_*ter 6

NuGet包管理器控制台不公开任何命令来从Visual Studio中创建NuGet包.你也不能使用nuget.exe命令,因为你不是在启用PowerShell的控制台中与NuGet命令行交谈(除非你通过创建NuGet PowerShell配置文件来了解位于磁盘上的nuget.exe)例如别名).

但是,如果要在Visual Studio(包括IntelliSense)中创建NuSpec文件,我会创建一个NuGet包供您安装.有关我博客的更多信息:http://www.xavierdecoster.com/install-nuspec-with-intellisense

这使您可以更轻松地创建NuGet清单文件,但是这仍然不会创建实际的包.为此,您必须回退到nuget.exe命令行工具,您可以从https://nuget.org/nuget.exe下载该工具.可以在NuGet Docs站点上找到文档.


Dav*_*son 0

确保您nuget.exe在 的某处%PATH%

注意:我们使用 Jenkins 并需要EnvInject来获取构建过程中可用的 %PATH% 变量。

编辑.csproj文件以包含程序集版本号的新宏变量,请参阅在构建后事件期间确定程序集版本?

<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>
Run Code Online (Sandbox Code Playgroud)

.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
)
Run Code Online (Sandbox Code Playgroud)