Visual Studio 生成事件命令

Visual Studio在生成项目工程前后,有时我们需要做一些特殊的操作,比如:拷贝生成的dll到指定目标下面等。

结合VS可以添加预先生成事件和后期生成事件,采用命令或bat批处理。

1、Visual Studio生成事件命令
•预先生成事件命令行,示例:

cd $(ProjectDir)\Resource
BuildResource.bat
•后期生成事件命令行,示例:

xcopy /r /y $(TargetPath) $(ProjectDir)..\Bin\
xcopy /r /y $(TargetDir)$(TargetName).dll $(ProjectDir)..\Bin\
xcopy /r /y $(TargetPath) $(ProjectDir)..\Release\
xcopy /r /y $(TargetDir)$(TargetName).dll $(ProjectDir)..\Release\
xcopy /r /y $(ProjectDir)Resource\zh-CN\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin\zh-CN\
xcopy /r /y $(ProjectDir)Resource\en-US\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin\en-US\
xcopy /r /y $(ProjectDir)Resource\GoodSoft.ZSM.MS.DAL.dll $(ProjectDir)..\Bin
•对编译出的.dll,.lib,.pdb等文件进行复制copy并更改扩展名为.bytes

copy "$(TargetDir)$(ProjectName).*" "$(SolutionDir)\otherDir\$(ProjectName).*.bytes"
•xcopy "TargetDir" "SolutionDir"

示例:
xcopy "$(TargetDir)\*.dll" "$(ProjectDir)..\Lib\*.dll" /D /F /K /R /Y
   在VS的项目属性“生成事件”标签页中添加“生成后事件命令行”, copy $(TargetDir) "D:\Program Files\Lib"
这样编译成功后会将生成的文件拷贝到D:\Program Files\Lib
注意:
如果项目无任何改动,“生成”是不会编译的,所以当运行生成后事件选中“生成更新项目输出时”,
 不会被执行,但“重新生成”会无条件的输出,并触发事件

2、部分宏列表宏说明

$(ProjectDir) 项目的目录(定义为驱动器 + 路径);包括尾随反斜杠“\”。

$(ProjectPath) 项目的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(ProjectName) 项目的基名称。

$(ProjectFileName) 项目的文件名称(定义为基名称 + 文件扩展名)。

$(ProjectExt) 项目的文件扩展名。 文件扩展名之前包括“.”。

$(SolutionDir) 解决方案的目录(定义为驱动器 + 路径);包括尾随反斜杠“\”。

$(SolutionPath) 解决方案的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(SolutionName) 解决方案的基名称。

$(SolutionFileName) 解决方案的文件名称(定义为基名称 + 文件扩展名)。

$(SolutionExt) 解决方案的文件扩展名。 文件扩展名之前包括“.”。

$(TargetDir) 生成的主输出文件的目录(定义为驱动器 + 路径);包括尾随反斜杠 “\”。

$(TargetPath) 生成的主输出文件的绝对路径名称(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(TargetName) 生成的主输出文件的基名称。 $(TargetFileName) 生成的主输出文件的文件名称(定义为基名称 + 文件扩展名)。

$(TargetExt) 生成的主输出文件的文件扩展名。 文件扩展名之前包括“.”。 

$(Configuration) 当前项目配置的名称(例如“调试”)。

$(Platform) 当前项目平台的名称(例如“Win32”)。 

$(RootNameSpace) 包含应用程序的命名空间(如果存在)。

$(VSInstallDir) 在其中安装了 Visual Studio 的目录。 $(FrameworkDir) 在其中安装了 .NET Framework 的目录。

$(FrameworkVersion) Visual Studio 使用的.NET framework 版本。 结合 $(FrameworkDir),Visual Studio 使用的.NET Framework 版本的完整路径。 $(FrameworkSDKDir) 在其中安装了 .NET Framework 的目录。 .NET Framework 可能已作为 Visual Studio 的一部分安装或单独安装。

$(WebDeployPath) 从 Web 部署根到项目输出位置的相对路径。 返回与 RelativePath 相同的值。

$(WebDeployRoot) <localhost> 的位置的绝对路径。 例如,c:\inetpub\wwwroot。 $(MSBuildProjectName)  项目的基名称。

$(MSBuildProjectExtension) 项目的文件扩展名。它包括文件扩展名前面的“.”。

$(PlatformName) 当前目标平台的名称(例如,“AnyCPU”)。

$(OutputPath) 生成的主输出文件的路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。

$(OutputType) 项目的输出类型。对于数据库项目,此类型为“database”。

$(DBProduct) 目标数据库项目的 Microsoft SQL Server 版本。此结果将为 SQL Server 2010或 SQL Server 2016。

$(TargetDatabase) 目标数据库的名称。

$(TargetConnectionString) 用于连接到目标数据库当前驻留(或将驻留)的服务器的连接字符串。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: