Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 Visual Studio:如何仅在';必要的'; 我使用一个强>自定义构建步骤< /St> >将一个C++项目的内置DLL(即 $(TravePATH) >复制到磁盘上的不同位置。< /P>_Visual Studio 2012_Msbuild_Custom Build Step_Vcproj - Fatal编程技术网

Visual studio 2012 Visual Studio:如何仅在';必要的'; 我使用一个强>自定义构建步骤< /St> >将一个C++项目的内置DLL(即 $(TravePATH) >复制到磁盘上的不同位置。< /P>

Visual studio 2012 Visual Studio:如何仅在';必要的'; 我使用一个强>自定义构建步骤< /St> >将一个C++项目的内置DLL(即 $(TravePATH) >复制到磁盘上的不同位置。< /P>,visual-studio-2012,msbuild,custom-build-step,vcproj,Visual Studio 2012,Msbuild,Custom Build Step,Vcproj,我已将自定义生成步骤的输出设置为目标DLL路径,并将附加依赖项设置为$(TargetPath)-我正在复制的文件,希望VS仅在源DLL比目标DLL新时才运行该步骤 但是,每次我构建项目时,VS都会运行自定义构建步骤,因此它似乎无法判断是否不需要执行复制(源DLL$(TargetPath)没有更改)。我必须配置错误的步骤 什么设置将为我提供我想要的行为(即,-VS认为项目是最新的,如果它已构建并且自定义构建步骤成功) 在VS输出窗口中,我看到这一行,这似乎意味着VisualStudio将vcxpr

我已将自定义生成步骤的
输出设置为目标DLL路径,并将
附加依赖项设置为
$(TargetPath)
-我正在复制的文件,希望VS仅在源DLL比目标DLL新时才运行该步骤

但是,每次我构建项目时,VS都会运行自定义构建步骤,因此它似乎无法判断是否不需要执行复制(源DLL$(TargetPath)没有更改)。我必须配置错误的步骤

什么设置将为我提供我想要的行为(即,-VS认为项目是最新的,如果它已构建并且自定义构建步骤成功)

在VS输出窗口中,我看到这一行,这似乎意味着VisualStudio将vcxproj作为触发构建步骤的文件。我希望它使用$(TargetPath)

Input file "MyProject.vcxproj" is newer than output file "c:\custom\build\step\copies\the\dll\here.dll".

(PS:我应该补充一点,我最初使用的是后期构建步骤,但如果失败,VS会将项目视为成功构建,并且在第二次构建时不会再次运行它)

我认为您需要的是增量构建

下面是一个快速的操作方法:


基本要求是,您需要向目标提供输入,以便MSBuild可以将输入映射到输出,并在输出与输入更新/相同时跳过目标。

确保在copy命令之后更新指定的输出文件的时间戳(在Unix中,您将使用touch命令)

您可以在命令行中使用此选项:

cd c:\custom\build\step\copies\the\dll <br>
copy /b /y YOUR_SOURCE_DIRECTORY/here.dll .<br>
copy /b /y here.dll+,,
cd c:\custom\build\step\copies\dll
复制/b/y您的源目录/here.dll。
在此处复制/b/y.dll+,,
我不这么认为。我在一个VisualStudio项目中,所以构建目标已经定义为生成的DLL。