Подтвердить что ты не робот

Пакет NuGet сбой "Не удается найти" @(_ OutputPathItem → "% (FullPath)..."

Я пытаюсь сделать первый пакет 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 возвращает значение расширенного свойства.

4b9b3361

Ответ 1

У нас была та же проблема. добавление

-Prop Platform=AnyCPU

в командной строке заставило его работать для нас.

Ответ 2

Это, по-видимому, происходит только тогда, когда для файла .csproj ToolsVersion установлено значение 3.5 или ниже. Настройка ToolsVersion на 4.0 устраняет проблему.

Я создал проблему для команды проекта NuGet здесь: https://nuget.codeplex.com/workitem/4012

Ответ 3

Это может также иметь ту же ошибку, если для версии .NET Framework для сборки установлено значение 4.0.