现在我花了几个小时,但我只是不明白这一点:
为什么一个lib子目录不是由VS“快跟上时代的支票”兑现? 如果库的一个lib目录输出设置,解决方案总是重建 - 如果已经作了修改与否并不重要。 如果\ LIB目录子去掉它的工作原理。 为什么?
以下是我测试至今:
请参考下面的代码片段。 这一个完美的作品。 如果多个依赖项目被要求建立多次,他们真正建立仅适用于已进行任何更改一次。 在Visual Studio FastUpToDateCheck踢英寸
但是,如果你更改的行
<OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)</OutputPath>
至
<OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)\lib\</OutputPath>
它不断地重建。 任何想法,为什么?
ComponentBuild.props旁边.sln文件
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<IntermediateOutputPath>$(SolutionDir)obj\$(Configuration)\$(MSBuildProjectName)\</IntermediateOutputPath>
<UseCommonOutputDirectory>False</UseCommonOutputDirectory>
<DisableFastUpToDateCheck>false</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition=" '$(OutputType)' == 'Library' ">
<!-- To distinguish by \lib\ does not work, a rebuild is triggered since the up-to-date check fails -->
<!-- <OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)\lib\</OutputPath> -->
<OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)</OutputPath>
<OutDir>$(OutputPath)</OutDir>
</PropertyGroup>
<PropertyGroup Condition=" '$(OutputType)' == 'Exe' ">
<OutputPath>$(SolutionDir)bin\$(Configuration)\$(Platform)\</OutputPath>
<OutDir>$(OutputPath)</OutDir>
</PropertyGroup>
</Project>
该文件包含在之前的csproj文件Import Microsoft.CSharp.targets
:
.csproj的文件:
<!-- position of include is important, OutputType of project must be defined already -->
<Import Project="$(SolutionDir)ComponentBuild.props" Condition="Exists('$(SolutionDir)ComponentBuild.props')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
行为变得越来越怪异,我就越测试。 我创建了两个简单的库项目A和B. B依赖于A.我上面提到的进口增加和FastUpToDateCheck工作。 添加库路径到库输出类型后,在没有其他改变它的工作原理。 但是,当LIB B类项目的清理,以后每建立DO改造项目B.
当添加库路径exe文件输出类型为好。 该FastUpToDateCheck再次工作。
然后,我删除了从输出型的exe再次库路径,但令人惊讶的FastUpToDateCheck仍然有效 - 永远。 即使在清洁时所建,更改类或删除所有OBJ和bin文件夹。
但只要我删除从LIB输出类型的lib路径为好,即我重新设置所有到原来的状态,它失败。 它重建每次。 诊断输出的第一行是
项目“ClassLibrary1的”是不是最新的。 缺少输出文件C:\用户\ hg348 \文档\ Visual Studio的2015年\项目\ BuildTest \ BIN \调试\ AnyCPU \ LIB \ ClassLibrary1.dll“
它仍然看起来到库路径,即使没有设置任何更多。 我认为这是涉及一些讨厌的缓存。
是否有人可以验证这一点?