我在堆栈溢出中找到了很多答案,并且在网络上建议使用它的提示,我意识到它假设将引用的dll复制到输出文件夹。我想了解目标的逻辑以及如何正确使用它,到目前为止,我无法在网络上找到解释它的任何内容。在MSDN上有一行。
在我的项目中,我在根输出文件夹中获取了dll,而不是在“Bin”文件夹中,这是三个级别,所以我真的没有看到它的重点。我宁愿得到一个完整的explenation而不是解决我的一次性问题。
提前致谢
<Target Name="BuildSolutionWithConfig">
<Message Text="Build: $(BuildType) $(SolutionFileName)"></Message>
<MSBuild Projects="$(SolutionFileName)" Targets="_CopyWebApplication; ResolveReferences" Properties="Configuration=$(BuildType);OutputPath=$(BuildOutputPath);"></MSBuild>
<JsAndCssUpdater Path="$(FullPath)" Version="$(JsVersion)" PathToSaveLogAndBackup="$(PathToSaveLogAndBackup)"/>
<MSBuild.ExtensionPack.Compression.Zip ZipFileName="$(BuildOutputPath)\..\$(BuildType).zip" CompressPath="$(BuildOutputPath)" TaskAction="Create"/>
</Target>
答案 0 :(得分:1)
默认情况下,至少在MSBuild 12.0中,ResolveReferences
目标本身并不执行任何操作。它只取决于许多其他目标。来自%PROGRAMFILES%\MSBuild\12.0\Bin\Microsoft.Common.CurrentVersion.targets
:
<!--
============================================================
ResolveReferences
============================================================
-->
<PropertyGroup>
<ResolveReferencesDependsOn>
BeforeResolveReferences;
AssignProjectConfiguration;
ResolveProjectReferences;
FindInvalidProjectReferences;
ResolveNativeReferences;
ResolveAssemblyReferences;
GenerateBindingRedirects;
ResolveComReferences;
AfterResolveReferences
</ResolveReferencesDependsOn>
</PropertyGroup>
<Target
Name="ResolveReferences"
DependsOnTargets="$(ResolveReferencesDependsOn)"/>
据我所知,$(ResolveReferencesDependsOn)
中的所有默认目标都没有实际将文件复制到输出目录中。相反,这些目标确定文件的位置,并且在某些情况下,导致构建其他项目以使文件可用。由于<MSBuild>
任务可以指定其输出的位置,因此只要(例如)ResolveProjectReferences
目标可以从{{1}的路径访问它们,目标实际放置文件的位置无关紧要返回。