Я знаю С момента выпуска 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 поддерживать использование переменных метаданных пакета?.