首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在针对netcoreapp2.1的SqlClient任务中使用MSBuild

在针对netcoreapp2.1的SqlClient任务中使用MSBuild
EN

Stack Overflow用户
提问于 2018-05-13 14:43:49
回答 1查看 656关注 0票数 1

我编写了一个类似于MSBuild的这一个任务,但是我的任务引用了System.Data.SqlClient

因此,我使用dotnet发布来针对特定的框架netcoreapp2.0来获取bin dir中的依赖项。

这方面的问题是,当我通过获得的msbuild脚本运行任务时:error : System.Data.SqlClient is not supported on this platform.

构建引擎:Microsoft (R) Build Engine version 15.7.177.53362 for .NET Core

这是一个完整的(任务和测试)项目

首席执行官:

代码语言:javascript
复制
<Project DefaultTargets="Build">
  <UsingTask TaskName="TestTasks.TestSqlClient" AssemblyFile=".\Task\bin\Debug\netcoreapp2.0\publish\TestTask.dll" />
  <Target Name="Build">
    <TestSqlClient />
  </Target>
</Project>

bin\netcoreapp2.0\publish下的文件和dirs列表

代码语言:javascript
复制
|   Microsoft.Build.Framework.dll
|   Microsoft.Build.Utilities.Core.dll
|   System.Data.SqlClient.dll
|   System.Text.Encoding.CodePages.dll
|   TestTask.deps.json
|   TestTask.dll
|   TestTask.pdb
|
\---runtimes
    +---unix
    |   \---lib
    |       \---netstandard2.0
    |               System.Data.SqlClient.dll
    |
    +---win
    |   \---lib
    |       +---netcoreapp2.0
    |       |       System.Text.Encoding.CodePages.dll
    |       |
    |       \---netstandard2.0
    |               System.Data.SqlClient.dll
    |
    +---win-arm64
    |   \---native
    |           sni.dll
    |
    +---win-x64
    |   \---native
    |           sni.dll
    |
    \---win-x86
        \---native
                sni.dll
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-13 16:33:52

看来您已经碰到https://github.com/Microsoft/msbuild/issues/1887了。使用MSBuild任务中的依赖项的当前限制之一是,MSBuild不会加载本机依赖项。正如您在输出中所看到的,有一个“运行时”文件夹,其中包含sni.dll for x86、x64等。在.NET核心上解决此问题的唯一方法是使用程序集加载上下文手动解决本机依赖关系。这是很难做正确的,我不推荐它。有关更多详细信息,请参阅https://natemcmaster.com/blog/2017/11/11/msbuild-task-with-dependencies/

一个更简单的解决方法是将您的工具实现为控制台工具。然后使用目标和Exec任务,或ToolTask的自定义实现,在构建期间运行控制台工具。这就是C#编译器本身的工作原理,我在这里更详细地描述了这种方法:https://natemcmaster.com/blog/2017/11/11/build-tools-in-nuget/。另外,请参阅https://github.com/natemcmaster/Yarn.MSBuild获取一个真实世界的示例。

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

https://stackoverflow.com/questions/50317310

复制
相关文章

相似问题

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