Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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 MSBuild+;Visual studio:自定义默认设置";“复制本地”;对于解决方案中的所有项目_Visual Studio_Visual Studio 2010_Msbuild - Fatal编程技术网

Visual studio MSBuild+;Visual studio:自定义默认设置";“复制本地”;对于解决方案中的所有项目

Visual studio MSBuild+;Visual studio:自定义默认设置";“复制本地”;对于解决方案中的所有项目,visual-studio,visual-studio-2010,msbuild,Visual Studio,Visual Studio 2010,Msbuild,我对MSBuild知之甚少 最近我读到,对于大型解决方案,将“copy local”设置为false可以显著缩短编译时间。 通过在MSBuild扩展路径中设置名为CustomAfterMicrosoftCommon.targets的计算机范围文件,我找到了一种将默认设置设置设置为false的方法 这很有效,但是,这种方法存在一些问题 -此默认值设置是系统范围的,我希望它仅适用于特定的解决方案。我在项目层面上不这么做,因为我有很多不同的解决方案 -我希望将此默认值应用于“非输出项目”。我的意思是类

我对MSBuild知之甚少

最近我读到,对于大型解决方案,将“copy local”设置为false可以显著缩短编译时间。 通过在MSBuild扩展路径中设置名为CustomAfterMicrosoftCommon.targets的计算机范围文件,我找到了一种将默认设置设置设置为false的方法

这很有效,但是,这种方法存在一些问题

-此默认值设置是系统范围的,我希望它仅适用于特定的解决方案。我在项目层面上不这么做,因为我有很多不同的解决方案

-我希望将此默认值应用于“非输出项目”。我的意思是类库项目不应该将copy local设置为true。但是,对于类库依赖项,主应用程序项目需要将本地复制为true,因为它需要运行。 理想情况下,对于那些输出项目,我希望返回到更智能的开箱即用默认值,该值足够智能,可以确定引用是否应该是私有的。我想我可以将默认值设置为Copy Local false,然后在需要时明确地将Copy Local设置为true。考虑到您通常没有太多的输出项目,这还不算太糟糕,但我想看看是否有人提出了更好的解决方案


有什么想法吗

Msbuild找到如下目标扩展
%MSBuildExtensionPath%\v4.0\CustomAfterMicrosoftCommon.targets

因此,解决第一个问题的一种方法是,以某种方式仅为要应用自己默认值的解决方案设置
MSBuildExtensionsPath

我用另一种方法解决了第二个问题。我还在“主应用程序项目”上保留了
copylocal=false
。相反,我将另一个项目的输出路径添加到DEVPATH环境变量中

SET DEVPATH=C:\Proj1\Output;C:\Proj2\Output

(并按规定对machine.config进行必要的更改)

编辑:


能否更详细地解释如何仅为解决方案设置MSBuildExtensionsPath?这是一个环境变量吗?如果打开命令提示符并键入echo%MSBuildExtensionsPath%,则该变量似乎尚未定义。它是一个环境变量。如果未定义,msbuild将在默认文件夹中查找。(类似于c:\Program Files\MSBuild\v4)能否更详细地解释使用CustomAfterMicrosoftCommon文件的解决方案?