Visual Studio 2017 宏在构建时显示为空但在宏选择器中不显示
Visual Studio 2017 macros show empty on build but not in macro selector
当我将 post 构建事件添加到我的项目并尝试在编辑 Post-构建 ... 部分中使用宏时,它会显示每个宏的值
但是当构建运行时值显示空白
以下是使用 echo "The project path is:" $(ProjectPath) "end of path"
生成的
我使用的任何宏值似乎都为空
我正在使用以下 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 但无济于事。 post 构建事件中的 csproj 的完整路径确实有效。
我已经确认这发生在多台机器上 运行 VS/15.0.0+26228.9
这是 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
这对我有用:
在项目文件 (.vbproj)
的 <Target Name=...>
元素中指定您的脚本
<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">
当我将 post 构建事件添加到我的项目并尝试在编辑 Post-构建 ... 部分中使用宏时,它会显示每个宏的值
但是当构建运行时值显示空白
以下是使用 echo "The project path is:" $(ProjectPath) "end of path"
生成的我使用的任何宏值似乎都为空
我正在使用以下 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 但无济于事。 post 构建事件中的 csproj 的完整路径确实有效。
我已经确认这发生在多台机器上 运行 VS/15.0.0+26228.9
这是 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
这对我有用:
在项目文件 (.vbproj)
<Target Name=...>
元素中指定您的脚本
<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">