我有一个导入的MSBuild项目(appconfig.transformation.targets),它定义了一些任务并将它们放在BuildDependsOn属性中.我已将此文件放在解决方案的顶级文件夹中(Projects\LibrariesSolution\appconfig.transformation.targets):
<PropertyGroup>
<BuildDependsOn>
TransformWebConfig;
OverrideAppConfigWithTargetPath;
$(BuildDependsOn);
CopyTransformedConfig
</BuildDependsOn>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
Run Code Online (Sandbox Code Playgroud)
我在子文件夹中的解决方案内的每个csproj文件中导入此项目.所以Projects\LibrariesSolution\Project1\Project1.csproj有这样的东西:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<Import Project="..\appconfig.transformation.targets" />
... the rest of the csproj stuff ...
Run Code Online (Sandbox Code Playgroud)
我这样启动构建:
cd LibrariesSolution
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Clean /p:Configuration=Release Project1\Project1.csproj
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Build /p:Configuration=Release Project1\Project1.csproj
Run Code Online (Sandbox Code Playgroud)
但是,BuildDependsOn中列出的目标似乎没有被调用.当然输出在这里显示得过于冗长,但"TransformWebConfig"并没有出现在输出中的任何地方.没有显示错误.可能有什么不对?我该怎么做才能进一步排除故障?
Bri*_*ker 14
您有导入订单问题.您正在导入定义属性BuildDependsOn的文件(appconfig.transformation.targets).稍后在项目文件中,将导入Microsoft目标,这将重新定义BuildDependsOn并清除您的更改,因为它们的定义不包含BuildDependsOn中的任何现有值.
BuildDependsOn在Microsoft.Common.targets中定义,由Microsoft.CSharp.targets导入,用于C#项目.导入应该在导入Microsoft.CSharp.targets之后进行.