2017-10-16 72 views
0

我遇到了nuget(版本4.3.0.4406)和msbuild(版本15.3.409.57025)的问题。我正在使用VS2017创建类库。使用功能的VS2017我可以成功地创建一个nuget包(我可以安装在另一个解决方案)。现在我想将install.ps1脚本添加到安装nuget时运行的tools文件夹中的包中。VS2017 msbuild/nuget pack

在的csproj文件我正在指定多个目标框架:

<TargetFrameworks>net45;net452</TargetFrameworks>

我无法弄清楚如何做到这一点。我使用nuget -spec命令创建了一个nuspec文件,该命令生成一个简单的nuspec文件。当我使用带有/ t:pack和/p:Nuspecfile=path.to.nuspec的msbuild命令时,出现以下错误:

NuGet.Build.Tasks.Pack.targets(141,5):error:值不能为空或空字符串。

我有来自其他项目(从VS2015解决方案)nuspec文件工作没有问题,我现在使用的结构基本相同。任何人都可以让我知道我是否在尝试一些无法完成的事情?

回答

0

您可以通过在的csproj文件更新其元数据包的任何项目:

<ItemGroup> 
    <None Update="install.ps1" CopyToOutputDirectory="PreserveNewest" Pack="true" PackagePath="\tools" /> 
</ItemGroup> 

注意,PS1文件只运行使用packages.config引用NuGet包项目,你应该研究替代性的方式来完成你现在想用PackageReference这个脚本来替代剧本。

+0

谢谢你,我今天晚些时候会尝试一下,如果它能够工作,就会报告回来。使用包的项目是使用packages.config的WPF项目。所以,那应该没问题。 – Sam

+0

是的,除非未来的VS版本试图迁移项目(但它应该保留项目文件修改)。新项目可以使用引用包的新方法。 –

+0

我曾试过马丁的建议。当我使用csproj文件中的元素指定一个目标框架时,它似乎只能工作。当我使用元素(仅指定实例net452)时,它不包含生成的nuget包中的工具文件夹:-(是否有人有针对此特定情况的解决方案? – Sam