【问题标题】:Nuget Pack command, in Visual Studio 2017Nuget Pack 命令,在 Visual Studio 2017 中
【发布时间】:2017-08-02 17:07:24
【问题描述】:

我有一个 .core 解决方案,其中需要包含一些项目,据我了解,实践是在 .core 中使用 Nuget。对于我在 Properties->Package 下的那些项目,选中了“Generate package on build”。问题是 nuget-package 被放在 \bin\Debug\... 有没有办法定义一个覆盖属性,以便它可以放在其他地方?

我已尝试放入 nuget.config:

<configuration>
  <config>
    <add key="repositorypath" value="some path" />
  </config>
</configuration>

没有运气。我也尝试过 .csproj:

    <PropertyGroup>
       <TargetFramework>netcoreapp1.1</TargetFramework>
       <PreBuildEvent></PreBuildEvent>
       <PostBuildEvent></PostBuildEvent>
       <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
       <PackageOutputDir> some path </PackageOutputDir>
    </PropertyGroup>

我曾尝试使用 OnPostBuild 将文件从其位置复制到另一个位置,但打包命令似乎在 postbuild 后被触发...另一个问题是宏中使用的参数不是由系统设置的,它们在运行时只是空字符串。

我还尝试从命令提示符运行,因为它在带有 .core 和 Nuget 的 Visual Studio 2017 中感觉如此错误。从命令提示符(nuget pack)运行时,我得到非信息性信息:“无法将 System.String 类型的对象转换为 NuGet.Frameworks.NuGetFramework 类型”

我可以做些什么来将我的所有 nuget 包放在另一个目录中,而不是 Visual Studio 2017 使用的默认设置...我可以以某种方式覆盖此设置吗?

谢谢!

【问题讨论】:

  • NuGet.exe does not work with the new style csproj files,你必须使用dotnet packmsbuild.exe /t:pack
  • 您应该在 .csproj 中使用“PackageOutputPath”而不是“PackageOutputDir”。你不能通过构建事件来做到这一点。因为 pack 包目标在 Build 任务后面。但是您可以在项目文件中的此目标“GenerateNuspec”后面添加自定义复制任务:

标签: c# nuget visual-studio-2017 nuget-package


【解决方案1】:

您可以通过在 &lt;PropertyGroup&gt; 中设置它来覆盖包输出目录:

<PackageOutputPath>..\some-folder</PackageOutputPath>

【讨论】:

  • 感谢大家的帮助,Martin 和 Leos 关于更改“魔术字符串键”的提示帮助了我 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 2019-03-29
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
相关资源
最近更新 更多