更新:
在使用不存在的路径测试您的代码后,我重现了您的错误。在挑战加载任务 dll 后,可能会评估条件。
您可以通过首先构建路径来修改代码以消除错误(使用$(VisualStudioVersion)
或手动:
<Project ToolsVersion="4.0" DefaultTargets="Echo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VSExtPath>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\</VSExtPath>
<VSExtPath Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0')">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\</VSExtPath>
</PropertyGroup>
<UsingTask
TaskName="TransformXml"
AssemblyFile="$(VSExtPath)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="Echo">
<Message Text="$(VSExtPath)" />
<TransformXml />
</Target>
</Project>
另一种解决方案是以普通文件使用$(VisualStudioVersion)
属性的相同方式使用属性。.csproj
您可以使用 $(VisualStudioVersion) 导入任务的适当版本:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>
<UsingTask
TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
从 .net 4.5 开始,该$(VisualStudioVersion)
属性由 MSBuild 设置(最高可用)。查看详情Sayed Hasimy 博客