我正在尝试更新现有应用程序,以便它将从 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 Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax\AjaxMinTask.dll 加载“AjaxMin”任务。无法加载文件或程序集 'file:///C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax\AjaxMinTask.dll' 或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
我使用 MSBuild消息任务输出路径并通过从命令提示符导航到它来验证它是否正确。我也尝试使用UsingTask,但没有运气。
为什么 Visual Studio 不在我指定的位置寻找 AjaxMin DLL?
更新: 我将 AjaxMin 的导入标签移到顶部(项目标签的正下方),它现在可以工作了。我不明白为什么。