首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MSBuild UsingTask解析引用

MSBuild UsingTask解析引用
EN

Stack Overflow用户
提问于 2012-11-25 14:30:13
回答 2查看 10.2K关注 0票数 23

我觉得我以前修复过这个问题,但我记不清是怎么修复的。

我有一个任务文件,看起来像这样(CustomTasks.tasks):

代码语言:javascript
运行
复制
<UsingTask AssemblyFile="CustomTasks.dll" TaskName="MyCustomTask"/>

它引用了一个程序集(即Ionic.Zip.dll)。Ionic.Zip.dll不在GAC中(我也不希望它在GAC中)。它就在我的CustomTasks.dll旁边。

我有一个名为MSBuild的目录,这个目录比我的sln文件高一级,里面有CustomTasks.tasks、CustomTasks.dll和Ionic.Zip.dll。

我有一个引用任务文件并调用自定义任务的csproj:

代码语言:javascript
运行
复制
<Import Project="$(ProjectDir)\..\MSBuild\CustomTasks.tasks" />

<MyCustomTask ..... />

在构建时,这会产生以下结果:

无法从程序集....MyCustomTasks.dll加载"MyCustomTask“任务。无法加载文件或程序集'Ionic.Zip,......‘或者它的一个依赖项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-25 15:07:08

感到疲倦和沮丧,并采取了直接的方法……我不认为这是我解决问题的相同方式,previously...but也许这会对其他人有帮助。其他更优雅的解决方案也非常受欢迎。

代码语言:javascript
运行
复制
  <Target Name="BeforeBeforeBuild" BeforeTargets="BeforeBuild">
    <HandleAssemblyResolve SearchPath="$(ProjectDir)\..\MSBuild\" />
  </Target>
  <UsingTask TaskName="HandleAssemblyResolve" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <SearchPath ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
      <Using Namespace="System" />
      <Using Namespace="System.IO" />
      <Using Namespace="System.Reflection" />
      <Code Type="Fragment" Language="cs">
        <![CDATA[
AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => 
{ 
  var assemblySearchPath = Path.Combine(SearchPath, e.Name.Split(',')[0]);
  if (File.Exists(assemblySearchPath)) return Assembly.LoadFrom(assemblySearchPath);

  return null;
};
]]>
      </Code>
    </Task>
  </UsingTask>
票数 27
EN

Stack Overflow用户

发布于 2015-03-16 21:02:15

这实际上很容易修复。将您的自定义生成任务和依赖项放在不同的文件夹中。然后,依赖项被正确加载。

例如:

代码语言:javascript
运行
复制
<UsingTask AssemblyFile="..\BuildTools\CustomTasks.dll" TaskName="MyCustomTask"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13548851

复制
相关文章

相似问题

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