我正在嘗試我的第一個NuGet包,並且遇到了一些麻煩,我有一個相當簡單的項目,和一個非常簡單的.nuspec文件:NuGet包失敗,「無法找到'@(_ OutputPathItem - >'%(FullPath)...」
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<description>$description$</description>
</metadata>
</package>
當我運行的NuGet包使用此命令行:
NuGet.exe pack mylibrary.csproj -Verbosity detailed -Properties Configuration=Debug
我得到這個錯誤:
NuGet.CommandLineException: Unable to find '@(_OutputPathItem->'%(FullPath)mylibrary.dll')'. Make sure the project has been built.
at NuGet.Commands.ProjectFactory.BuildProject()
at NuGet.Commands.ProjectFactory.CreateBuilder(String basePath)
at NuGet.Commands.PackCommand.BuildFromProjectFile(String path)
at NuGet.Commands.PackCommand.BuildPackage(String path)
at NuGet.Commands.PackCommand.ExecuteCommand()
at NuGet.Commands.Command.Execute()
at NuGet.Program.Main(String[] args)
的OUTP ut文件肯定在bin \ Debug文件夾中,但NuGet顯然沒有找到它們。
這顯然只有在.csproj文件的ToolsVersion設置爲3.5或更低時纔會發生。將ToolsVersion設置爲4.0可以解決問題。
當調用_project.GetPropertyValue("TargetPath")
(ProjectFactory.cs〜296)時,MSBuild 3.5返回未擴展的屬性值,其中MSBuild 4.0返回展開屬性值。
有沒有什麼辦法可以從nuspec開始這項工作,而不需要從命令行指定它呢? –
我們使用惠普端口複製器和我們的筆記本電腦,將系統環境變量'PLATFORM'設置爲'BNB'。請參閱[爲什麼我的平臺環境變量定義爲'BNB'?](http://stackoverflow.com/questions/2507856/why-is-my-platform-environment-variable-defined-as-bnb)。 –
在(2.7)的最新版本中,看起來像-Prop現在稱爲 - 屬性。對我來說,一個可行的例子是:nuget pack my.csproj -Properties「Platform = AnyCpu; version = 1.0; configuration = Debug」 –