平台上安装了.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>
kfddsnfsjnfs
,是吗? - Lasse V. Karlsen