【问题标题】:Create nuget package from Visual Studio 2013从 Visual Studio 2013 创建 nuget 包
【发布时间】:2013-11-21 23:27:00
【问题描述】:

我已经在我的 VS2013 上安装了 NuGet.Tools.2013.vsix。而且我喜欢从管理器控制台创建一个 nuget 包,但是当我尝试时我得到一个消息:

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

我不知道我做错了什么。

是否可以使用管理器控制台来创建一个包,或者我需要使用其他东西。

【问题讨论】:

    标签: visual-studio nuget


    【解决方案1】:

    不确定我是否完全理解这个问题,但如果您在 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 包?
    • 问题是如何从 NPC 获取包。答案不能是“不要使用 NPC,使用 Windows CLI”
    【解决方案2】:

    NuGet 包管理器控制台不公开任何用于从 Visual Studio 中创建 NuGet 包的命令。您也不能使用 nuget.exe 命令,因为您不是在启用 PowerShell 的控制台中与 NuGet 命令行对话(除非您通过创建例如别名)。

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

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

    【讨论】:

      【解决方案3】:

      现在有一个 Nuget 包浏览器,它允许您使用一个漂亮的小 GUI 创建 Nuget 包。通过 ClickOnce 部署安装。

      https://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplorer.application

      【讨论】:

        【解决方案4】:

        确保您在%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
        )
        

        【讨论】:

          【解决方案5】:

          这是旧的,但我正在寻找此信息。我将http://docs.nuget.org/create/creating-and-publishing-a-package 处的信息与我在使用包管理器控制台时收集到的信息相结合。

          我通过执行以下操作从包管理器控制台创建了规范和包:

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

          替换为项目文件的路径。

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

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

          然后

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

          替换为您的项目文件名。 (我想对于 vb 项目来说应该是 .vbproj。)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-20
            • 1970-01-01
            • 2014-06-18
            • 2014-12-06
            • 1970-01-01
            相关资源
            最近更新 更多