Msbuild v15 не может разрешить переменные метаданных файла nuspec - PullRequest
0 голосов
/ 18 октября 2018

Я знаю С момента выпуска msbuild 15 (против 2017) NuGet теперь полностью интегрирован в MSBuild.

У меня есть файл nuspec с определением переменных свойств пакета, таких как:

    <metadata>
        <id>$id$</id>
        <version>$version$</version>  
        <authors>$authors$</authors>
    ...
    </metadata> 

Файл nuspec находится в той же папке проекта.

При использовании инструмента nuget для создания пакета он работает нормально.

    nuget pack   

При использовании msbuild v15 возникает исключение.

выполните команду:

    msbuild -version

Microsoft (R) Build Engine версии 15.8.168 + ga8fba1ebd7 для .NET Framework 15.8.168.64424

    msbuild  /t:pack /p:configuration=release    /p:NuspecFile=mylib.nuspec

повысить исключение:

C: \ Program Files \ dotnet \ sdk \ 2.1.402 \ Sdks \NuGet.Build.Tasks.Pack \ build \ NuGet.Build.Tasks.Pack.targets (199,5): ошибка: значение не может быть нулевым или пустой строкой.

Странно, что dotnet sdk версии 2.1.402 вызывает исключение.

Я попытался установить msbuild с vs2017 с его путем, а также вызывает то же исключение.

Когда я заменяю переменные значениями, msbuild работает нормально.

Вопрос

Это ошибка в версии msbuild 15.8.168.64424 или я что-то пропустил?

Другими словами, может ли msbuild поддерживать использование переменных метаданных пакета?.

1 Ответ

0 голосов
/ 20 октября 2018

Как уже упоминалось в комментариях, вам больше не нужен файл Nuspec, так как большинством аспектов можно управлять с помощью свойств в файле csproj или дополнительных метаданных по элементам (например, если вам требуется дополнительный контент).

Если по какой-то причине вам нужен файл nuspec, вам нужно предоставить переменные для подстановки самостоятельно.Вы можете сделать это в цели внутри файла csproj следующим образом:

<Target Name="SetNuspecProperties" BeforeTargets="GenerateNuspec">
  <PropertyGroup>
    <NuspecProperties>$(NuspecProperties);id=$(AssemblyName)</NuspecProperties>
    <NuspecProperties>$(NuspecProperties);config=$(Configuration)</NuspecProperties>
    <NuspecProperties>$(NuspecProperties);version=$(PackageVersion)</NuspecProperties>
    <NuspecProperties>$(NuspecProperties);description=$(Description)</NuspecProperties>
    <NuspecProperties>$(NuspecProperties);authors=$(Authors)</NuspecProperties>
  </PropertyGroup>
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...