Answers:
构建前和构建后事件作为批处理脚本运行。您可以在上执行条件语句$(ConfigurationName)
。
例如
if $(ConfigurationName) == Debug xcopy something somewhere
仅供参考,您不需要使用goto。shell IF命令可与圆括号一起使用:
if $(ConfigurationName) == Debug (
copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
echo "why, Microsoft, why".
)
"$(ConfigurationName)"
如果收到错误代码255,请使用(请注意引号)
$(ConfigurationName)
为空(生成后事件命令行)。if "$(Configuration)" == "Debug"
为我工作。顺便说一句,如果您想在所有其他配置中进行操作,请使用if NOT "$(Configuration)" == "Debug"
。
像平常一样添加您的发布活动。然后保存您的项目,在记事本(或您喜欢的编辑器)中将其打开,然后将条件添加到PostBuildEvent属性组中。这是一个例子:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
cd "$(ProjectDir)"
扩大到cd ""
。
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
。宏变量,一切正常。
或者,(由于将事件放入批处理文件中,然后再调用),请使用以下命令(在“生成事件”框中,而不是在批处理文件中):
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
' Debug items in here
:exit
这样,您可以对任何配置都具有事件,并且仍然可以使用宏对其进行管理,而不必将其传递到批处理文件中,请记住%1
是$(OutputPath)
,等等。
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
并使用goto :$(ConfigurationName)
Visual Studio 2015:正确的语法是(将其保留在一行上):
if "$(ConfigurationName)"=="My Debug CFG" ( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y) else ( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)
这里没有错误255。
从Visual Studio 2019开始,现代.csproj
格式支持直接在Target
元素上添加条件:
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="nswag run nswag.json" />
</Target>
用户界面没有提供设置方法,但是,Configuration
如果您通过用户界面进行更改,它确实可以安全地保留该属性。
这在Visual Studio 2015中对我有用。
我从与我的解决方案文件夹相同级别的库文件夹中的文件夹中复制所有DLL文件到正在构建的项目的targetdirectory中。
使用我的项目目录中的相对路径并使用.. \ .. \ lib建立两个步骤
MySolutionFolder
.... MyProject
库
if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE (echo "Not Debug mode, no file copy from lib")
像任何项目设置一样,可以按配置配置buildevents。只需在“属性页面”对话框的下拉列表中选择要更改的配置,然后编辑构建后的步骤。