我有一个Visual Studio 2012 VC ++项目(可执行文件),它使用来自另一个VC ++项目的dll。当我添加以下代码时,它在IDE上成功构建 项目 - >构建事件 - >预建活动
call setupdll.bat
其中 setupdll.bat 将dll的环境变量设置为
set COMSPEC = "%VCINSTALLDIR%\vcvarsall.bat" amd64
setx PATH "..\..\lib\libsndfile;..\..\lib\simulink"
唯一需要注意的是,一旦项目构建完毕,我需要关闭VS IDE,再次重新打开以便能够成功运行项目,因为下一个会话中会发生指定路径的环境变量添加。
现在,当我需要在没有安装Visual Studio的构建服务器上构建解决方案时,我执行批处理脚本" MySol.bat "使用msbuild.exe进行构建过程。但是,在这种情况下,我不包括" setupdll.bat "在Project属性Project-> Build Events->预建活动
而是执行以下作为" MySol.bat "的一部分
PATH=%PATH%;"..\..\lib\libsndfile;..\..\lib\simulink"
这也很好用。
但是,这意味着每次我必须使用IDE构建解决方案时,我都会包含" setupdll.bat "文件在属性中,而在构建服务器上,我没有。
我尝试了以下解决方案
StackOverflow Duplicate question
但它不起作用。 具体来说,我做了以下 修改了项目xml以添加属性" FromVS "
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_File|x64'">
<FromVS>true</FromVS>
<TargetExt>.exe</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
当我调用VS IDE时,我将PREbuildEvent修改为
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_File|x64'">
<PreBuildEvent>
<Command>call setupdll.bat Condition="$(FromVS)"</Command>
</PreBuildEvent>
当从&#34; MySol.bat &#34;进行呼叫时,我使用
call %MSBuildToolsPathVS%/msbuild %SolfilePath% /p:configuration=debug_File;Platform=x64;FromVS=false^
/t:build
但是,当我从MSbuild构建时,我仍然可以看到它 &#34; setupdll.bat &#34;叫做。 我正在做什么事情或者我需要更改其他设置吗? 还有其他建议吗?
感谢
Sedy