首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VisualStudio2017未从指定路径加载AjaxMin MSBuild任务

VisualStudio2017未从指定路径加载AjaxMin MSBuild任务
EN

Stack Overflow用户
提问于 2017-06-02 14:55:29
回答 3查看 4.7K关注 0票数 4

我正在尝试更新一个现有的应用程序,以便它将从VisualStudio2015(企业)加载到VisualStudio2017(Enterprise-V15.2 (26430.12)),并出现AjaxMin构建任务的问题。

在Visual 2015中,AjaxMin构建任务位于C:\Program (x86)\MSBuild\Microsoft\MicrosoftAjax中。Visual 2017在C:\程序文件(X86)\\2017\Enterprise\MSBuild\Microsoft中查找它。考虑到团队中的所有开发人员都可能没有VS2017企业,而且我们过去在开发人员安装错误版本时遇到过问题,我希望它使用解决方案中引用的AjaxMin NuGet包。

解决方案中有3个项目使用AjaxMin任务。我已经更新了所有这些文件,使其具有以下导入:

代码语言:javascript
复制
<?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:\AjaxMin文件(x86)\Microsoft Visual AjaxMin加载"AjaxMin“任务无法加载文件或程序集的“file:///C:\Program文件(x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax\AjaxMinTask.dll‘”或其依赖项之一。系统找不到指定的文件。确认声明是正确的,程序集及其所有依赖项都可用,任务包含实现Microsoft.Build.Framework.ITask的公共类。

我使用MSBuild 讯息任务输出路径,并通过从命令提示符导航到路径来验证其正确性。我也尝试使用UsingTask,但没有运气。

为什么Visual没有在我指定的位置查找AjaxMin DLL?

更新:I将AjaxMin的导入标记移到顶部(就在项目标记下),现在它可以工作了。我不明白为什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-09 19:11:19

事实证明,这个问题是另一个第三方构建任务的另一个重要问题。构建任务似乎改变了构建过程,使得AjaxMin构建任务在生成之后无法工作。让AjaxMin构建任务在Microsoft.CSharp.Targets导入之后,但在其他第三方构建任务完成之前完成。

票数 1
EN

Stack Overflow用户

发布于 2018-09-29 08:47:29

我通过安装.Net 3.5框架解决了这个问题

票数 4
EN

Stack Overflow用户

发布于 2017-06-05 05:29:13

我将AjaxMin的导入标记移到顶部(就在项目标记下),它现在开始工作了。我不明白为什么。

如果我正确理解您的问题,那是因为您有两个AjaxMinTask.dll的引用源,一个是默认的程序集源:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\MicrosoftAjax,另一个是导入引用,您会注意到AjaxMinTask.dllAjaxMin.targets中使用。

代码语言:javascript
复制
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask AssemblyFile="AjaxMinTask.dll" TaskName="AjaxMin" /> 
<UsingTask AssemblyFile="AjaxMinTask.dll" TaskName="AjaxMinBundleTask" />
<UsingTask AssemblyFile="AjaxMinTask.dll" TaskName="AjaxMinManifestTask" />
<UsingTask AssemblyFile="AjaxMinTask.dll" TaskName="AjaxMinManifestCleanTask" />

 ...
</Project>

因此,当设置任务后面的导入引用时,MSBuild将使用默认的程序集源(在VS2017安装目录下),当您在任务之前设置导入引用时,AjaxMin.targets将重写引用源的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44331857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档