【问题标题】:ITask Fails To Load during .Net Core Project Build ProcessITask 在 .Net Core 项目构建过程中无法加载
【发布时间】:2017-08-08 09:42:32
【问题描述】:

我有一个相当简单的类,它继承自 ITask,并作为更新版本 (VersionUpdater.dll) 的构建任务运行。工程文件入口如下:

<UsingTask TaskName="VersionUpdater" AssemblyFile="VersionUpdater.dll" />
<Target Name="BeforeBuild">
  <VersionUpdater />
</Target>

这对于常规的 .Net 项目来说非常好;但是我尝试将它加载到 .Net Core 项目构建任务中并得到了这个:

严重性代码描述项目文件行抑制状态 错误 MSB4062 无法从 程序集 C:...\VersionUpdater.dll。无法加载文件或程序集 'file:///C:...\VersionUpdater.dll' 或其依赖项之一。这 系统找不到指定的文件。确认 声明是正确的,程序集及其所有依赖项都是 可用,并且该任务包含一个公共类,该类实现 Microsoft.Build.Framework.ITask。

好的,所以我认为现在可能必须使用 .Net Core 构建 DLL,所以我这样做了,并创建了 VersionUpdater.Core.dll (AssemblyFile="VersionUpdater.Core.dll"),并得到了这个错误:

严重性代码描述项目文件行抑制状态 错误 MSB4062 无法从 程序集 C:...\VersionUpdater.Core.dll。无法加载文件或 程序集'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。这 系统找不到指定的文件。确认 声明是正确的,程序集及其所有依赖项都是 可用,并且该任务包含一个公共类,该类实现 Microsoft.Build.Framework.ITask。

正如我所说,该代码适用于普通的 .Net 项目。它只是不想使用 .Net Core 项目。有什么我想念的吗? .Net Core 找不到 System.Runtime 是不是 bug?

(来源在这里:https://github.com/rjamesnw/VersionUpdater)

【问题讨论】:

    标签: msbuild asp.net-core .net-core msbuild-task


    【解决方案1】:

    要使任务同时使用“dotnet msbuild”和 MSBuild.exe,您需要针对 .NET Framework 和 .NET Core 兼容框架(例如 .NET Standard)交叉编译该任务。然后,您需要更改基于哪些任务程序集加载以及 MSBuild 的运行时类型。您可以使用 MSBuildRuntimeType 检测到这一点。例如,

     <PropertyGroup>
        <TaskAssembly Condition=" '$(MSBuildRuntimeType)' == 'Core'">.\bin\Debug\netstandard1.6\MyTaskAssembly.dll</TaskAssembly>
        <TaskAssembly Condition=" '$(MSBuildRuntimeType)' != 'Core'">.\bin\Debug\net46\MyTaskAssembly.dll</TaskAssembly>
      </PropertyGroup>
    
      <UsingTask TaskName="MyTaskName" AssemblyFile="$(TaskAssembly)" />
    

    有关详细说明和示例,请参阅此博客文章。 http://www.natemcmaster.com/blog/2017/07/05/msbuild-task-in-nuget/

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2018-01-31
      • 2017-09-07
      • 2019-09-28
      • 2018-09-11
      • 1970-01-01
      • 2020-05-11
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多