Я пытаюсь сделать первый пакет NuGet, и у меня возникают проблемы. У меня довольно простой проект и очень простой файл .nuspec:
<?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)
Выходные файлы определенно находятся в папке bin\Debug, но NuGet, по-видимому, не находит их.
Это, по-видимому, происходит только тогда, когда для файла .csproj ToolsVersion установлено значение 3.5 или ниже. Настройка ToolsVersion на 4.0 устраняет проблему.
Кажется, что MSBuild 3.5 возвращает значение нерасширенного свойства при вызове _project.GetPropertyValue("TargetPath")
(ProjectFactory.cs ~ 296), где MSBuild 4.0 возвращает значение расширенного свойства.