【发布时间】:2017-11-04 00:54:39
【问题描述】:
我正在尝试更新现有应用程序,以便它可以从 Visual Studio 2015 (Enterprise) 加载到 Visual Studio 2017 (Enterprise - V15.2 (26430.12)) 中,但 AjaxMin 构建任务存在问题。
在 Visual Studio 2015 中,AjaxMin 构建任务位于 C:\Program Files (x86)\MSBuild\Microsoft\MicrosoftAjax 中。 Visual Studio 2017 在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft 中查找它。鉴于团队中的所有开发人员可能都没有 VS2017 Enterprise,并且我们过去曾遇到开发人员安装错误版本的问题,我希望它使用解决方案中引用的 AjaxMin NuGet 包。
解决方案中有 3 个项目使用 AjaxMin 任务。我已将它们全部更新为具有以下导入:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
...
<Import Project="$(MSBuildProjectDirectory)\..\..\..\packages\AjaxMin.5.14.5506.26202\tools\net40\AjaxMin.targets" />
<Target Name="BeforeBuild">
<ItemGroup>
<JS Include="..." Exclude="..." />
</ItemGroup>
<ItemGroup>
<CSS Include="..." Exclude="..." />
</ItemGroup>
<AjaxMin Switches="..." JsSourceFiles="@(JS)" JsCombinedFileName="..." CssSourceFiles="@(CSS)" CssCombinedFileName="..." />
</Target>
...
</Project>
但是,当构建发生时,我收到一条错误消息,指出在默认构建扩展目录中找不到 AjaxMin 任务:
无法从程序集 C:\Program 加载“AjaxMin”任务 文件 (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax\AjaxMinTask.dll。 无法加载文件或程序集 'file:///C:\Program Files (x86)\微软视觉 Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax\AjaxMinTask.dll' 或其依赖项之一。该系统找不到指定的文件。 确认声明正确,即组装 并且它的所有依赖项都是可用的,并且该任务包含一个 实现 Microsoft.Build.Framework.ITask 的公共类。
我已使用 MSBuild Message Task 输出路径,并通过从命令提示符导航到它来验证它是否正确。我也尝试使用UsingTask,但没有成功。
为什么 Visual Studio 不在我指定的位置寻找 AjaxMin DLL?
更新: 我将 AjaxMin 的导入标签移到顶部(项目标签的正下方),它现在可以工作了。我不明白为什么。
【问题讨论】:
标签: visual-studio msbuild visual-studio-2017 microsoft-ajax-minifier