Макросы Visual Studio 2017 при сборке отображаются пустыми, но не в макросе
Когда я добавляю событие пост-сборки в свой проект и пытаюсь использовать макрос в разделе Edit Post-Build ..., он показывает значение каждого макроса
Однако, когда сборка запускается, значение показывается пустым
с помощью echo было сгенерировано следующее: "Путь к проекту:" $(ProjectPath) "конец пути"
любое значение макроса, которое я использую, кажется, имеет значение null
Я использую следующий csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.6</TargetFramework>
<AssemblyName>Client</AssemblyName>
<PackageId>Client</PackageId>
<PackageTags>pkgname</PackageTags>
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
<PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PostBuildEvent>
echo on
echo "The project path is:" $(ProjectPath) "end of path"
dotnet pack $(ProjectPath)
</PostBuildEvent>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NoSQL" Version="1.0.4.3" />
</ItemGroup>
</Project>
Я пытался вручную редактировать csproj безрезультатно. полный путь к csproj в событии post build работает.
Я подтвердил, что это происходит на нескольких машинах под управлением VS/15.0.0+26228.9
1 ответ
Это открытый вопрос для VS 2017 https://developercommunity.visualstudio.com/content/problem/25206/build-events-window-strips-out-macros-unce-saved.html
Кажется, есть ошибка с переменными макросреды, такими как $(ConfigurationName)
игнорируется, по крайней мере, в Visual Studio 2017 вер. 15.9.11
Это сработало для меня:
укажите свой сценарий в<Target Name=...>
элемент в файле проекта (.vbproj)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
...
</PropertyGroup>
<Target Name="PostBuild" BeforeTargets="PostBuildEvent">
<!-- For " use " -->
<Exec Command="
if $(ConfigurationName) == Debug (
echo Upload Debug files:
cmd /c "S:\My Script\Debug_upload.cmd"
)
if $(ConfigurationName) == Release (
echo Upload Release files:
cmd /c "S:\My Script\Release_upload.cmd"
)"/>
</Target>
...
<Project Sdk="Microsoft.NET.Sdk">