【发布时间】: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 pack或msbuild.exe /t:pack -
您应该在 .csproj 中使用“PackageOutputPath”而不是“PackageOutputDir”。你不能通过构建事件来做到这一点。因为 pack 包目标在 Build 任务后面。但是您可以在项目文件中的此目标“GenerateNuspec”后面添加自定义复制任务:
标签: c# nuget visual-studio-2017 nuget-package