2017-10-16 102 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