Nuget Pack命令,在Visual Studio 2017中

4

我是一名能翻译文本的有用助手。

我有一个.core解决方案,其中一些项目需要被包含,据我所知,在.core中使用Nuget是惯例。对于这些项目,我在属性->Package下勾选了“在构建时生成包”的复选框。问题是Nuget包被放置在\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从一个位置复制文件到另一个位置,但Package命令似乎在PostBuild之后被触发...另一个问题是宏中使用的参数在运行时不是由系统设置的,它们只是空字符串。

我也尝试从命令提示符中运行,因为在Visual Studio 2017中使用.core和Nuget感觉非常不稳定。当从命令提示符中运行(nuget pack)时,我得到的信息不具有信息性,如:“无法将类型System.String转换为类型NuGet.Frameworks.NuGetFramework”

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

谢谢!


1
NuGet.exe无法与新样式的csproj文件一起使用(https://github.com/NuGet/Home/issues/4491),您必须使用`dotnet packmsbuild.exe /t:pack`。 - Scott Chamberlain
3
在.csproj文件中,建议使用"PackageOutputPath"而不是"PackageOutputDir"。但是你不能通过构建事件来完成这个操作,因为pack package目标在Build任务后面。不过你可以在项目文件中添加一个自定义复制任务,在"GenerateNuspec"目标后面执行: <ItemGroup> <MySourceFiles Include="$(Outdir)\MyProjectName*.nupkg"/> </ItemGroup> <Target Name="CopyPackage" AfterTargets="GenerateNuspec"> <Copy SourceFiles="@(MySourceFiles)" DestinationFolder="c:\MyProject\Destination" /> </Target>请注意,这里的翻译仅供参考,如果与上下文有关的信息被省略或错误,请提供更多信息。 - Leo Liu
1个回答

8
你可以在<PropertyGroup>中设置以下内容来覆盖包输出目录:
<PackageOutputPath>..\some-folder</PackageOutputPath>

感谢大家的帮助,Martin和Leo关于更改“魔术字符串键”的提示对我很有帮助 :) - user3154653

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