【发布时间】:2021-09-16 19:40:58
【问题描述】:
首先,一些上下文信息:
运行此平台的平台已安装 .Net Framework 4.7.1。我有一个符合 .Net Standard 2 规范的类库,以便将来支持 .Net Core。现在部分依赖项,即 Dapper,使用 System.Data.SqlClient。这个库在我自己的机器上工作得很好,但是当我在我的 Windows 2012 服务器上部署和测试它时遇到了问题。即,我在使用 Dapper 时出现运行时错误:Could not load file or assembly 'System.Data.SqlClient, Version=4.4.0.0, Culture=neutral, PublicKeyToken=kfddsnfsjnfs' or one of its dependencies. The system cannot find the file specified.
请注意,我首先安装了 4.5.1.0 版。然后我降级到 4.4.0.0 并重新运行代码。现在我遇到了同样的错误,但这次是关于 4.2.0.0。但我似乎在 Nuget 上找不到这个特定版本。在此之后,我用谷歌搜索。很多。首先,我尝试通过添加
appsettings.json:
{
"dependentAssembly": {
"assemblyIdentity": {
"name": "System.Data.SqlClient",
"publicKeyToken": "kfddsnfsjnfs",
"culture": "neutral"
},
"bindingRedirect": {
"oldVersion ": "4.4.0.0",
"newVersion": "4.5.1"
}
}
}
和 app.config:
<dependentAssembly>
<assemblyIdentity name="System.Data.SqlClient" publicKeyToken="kfddsnfsjnfs" culture="neutral" />
<bindingRedirect oldVersion="4.4.0.0" newVersion="4.5.1.0" />
</dependentAssembly>
然而这并没有什么不同。我还尝试过旧版本的 SqlClient 和多次重新安装。我还发现有人说要仔细检查 csproj 文件,所以它没有引用 gac 中的某些内容,但它没有:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Authors>me</Authors>
<Product />
<Company />
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>1.0.8</Version>
</PropertyGroup>
<ItemGroup>
<Content Include="TaskMetadata.json">
<PackagePath>TaskMetadata.json</PackagePath>
<Pack>True</Pack>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="dapper" Version="1.50.5" />
<PackageReference Include="itextsharp" Version="5.5.13" />
<PackageReference Include="System.Data.SqlClient" Version="4.5.1" />
</ItemGroup>
<ItemGroup>
<Folder Include="External\" />
</ItemGroup>
</Project>
【问题讨论】:
-
假设这是一个 Visual Studio 项目,您是否检查了 References 节点中的引用?
-
是的,我实际上在 Dependencies>Nuget>Dapper>System.Data.SQLClient 和 Dependencies>Nuget>System.Data.SQLClient 上有两个对 SqlClient 的引用。它们都是 4.5.1
-
在该程序的可执行文件所在的文件夹中,您是否在您的机器和 Windows 2012 服务器上都看到了
System.Data.SQLClient.dll文件? -
不,我能找到的最接近的 DLL 名为 System.Data.SQLite
-
转到 References 节点,然后转到 Add Reference...,然后向下滚动直到找到
System.Data.SQLClient。单击它旁边的复选框,然后关闭参考窗口。构建项目后,您现在应该在上述文件夹中拥有正确的 DLL。
标签: c#