You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移.NET Framework4.8控制台应用至PackageReference遇SqlServerTypes报错

解决从package.config迁移到PackageReference后SqlServerTypes上下文不存在的问题

针对你的.NET Framework 4.8控制台项目迁移后遇到的SqlServerTypes上下文不存在的问题,按以下步骤排查修复:

  • 检查项目文件中的包引用配置
    打开你的.csproj文件,确保Microsoft.SqlServerTypes的PackageReference包含完整的资产引用配置——这个包依赖原生运行时文件,缺少相关配置会导致无法加载对应类型:

    <PackageReference Include="Microsoft.SqlServer.Types">
      <Version>你的实际版本号</Version>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    
  • 手动导入包的构建目标文件
    迁移后可能丢失了包自带的构建目标引用,需要在.csproj中添加以下内容(替换X.X.X.X为你使用的包版本):

    <Import Project="$(NuGetPackageRoot)\microsoft.sqlserver.types\X.X.X.X\build\Microsoft.SqlServer.Types.targets" Condition="Exists('$(NuGetPackageRoot)\microsoft.sqlserver.types\X.X.X.X\build\Microsoft.SqlServer.Types.targets')" />
    

    这个目标文件负责将原生SqlServer空间库文件复制到输出目录,是类型能被识别的关键。

  • 确认代码中的命名空间引用
    在使用SqlServerTypes相关类型的代码文件顶部,确保添加了命名空间引用:

    using Microsoft.SqlServer.Types;
    
  • 验证输出目录的原生文件
    编译项目后,检查输出文件夹(比如bin\Debug\net48)下是否存在x86和x64子文件夹,且里面包含SqlServerSpatial140.dll等文件。如果没有,重新安装一次NuGet包,或手动确认包的资产是否被正确包含。

  • 修复绑定重定向
    打开App.config,确保存在对应版本的绑定重定向配置,避免版本冲突:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="你的实际版本号" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    

完成以上步骤后,清理并重新编译项目,SqlServerTypes相关类型应该能被正常识别。

内容的提问来源于stack exchange,提问作者Rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:45:03