gpt4 book ai didi

c# - Azure 云服务使用与其辅助角色不同的 nuget 包路径

转载 作者:行者123 更新时间:2023-12-03 04:23:10 25 4
gpt4 key购买 nike

我有一个 .net47 azure 云服务引用我的 .netstandard 库。

这些库使用 System.Data.SqlClientSystem.Reflection.TypeExtesions,我将其包含在 nuget 的辅助角色中。

由于某种原因,我收到了 BadImageFormatException - 经过快速搜索后,我发现云服务的 approot 文件夹包含不同版本的 System. Data.SqlClient.dllSystem.Reflection.TypeExtesions.dll 比 WorkerRole 项目的 bin/debug 文件夹(大小不同,同样使用powershell 脚本我能够加载后者,但不能加载第一个 - 同样的 BadImageFormatException)。

将 dll 从 bin/debug 复制到 approot 可以修复该问题 - 但这不是一个好的解决方案。

我不知道什么会导致这个版本不匹配 - 因为在我看来,云服务只会从 bin/debug 复制 dll

**两个项目暂时都在调试状态下编译和发布

更新

我发现云服务和辅助角色类库正在从两个不同的路径获取 nuget dll,而第一个路径不起作用 -

%userprofile%\.nuget\packages\System.Data.SqlClient\4.4.0\ref\net461\System.Data.SqlClient.dll
%userprofile%\.nuget\packages\System.Data.SqlClient\4.4.0\runtimes\win\lib\net461\System.Data.SqlClient.dll

删除 .nuget 文件夹无法解决此问题 - 似乎是一些奇怪的配置问题,导致使用与 csproj 本身不同的包来解决云服务

最佳答案

我们也遇到了同样的问题,但仅限于使用辅助角色的项目,而不是使用 Web 角色的项目。构建时的Web角色云服务项目将源Web项目bin目录复制到云服务项目bin目录。

我们模拟了将源项目bin目录复制到云服务bin目录的情况,发现可以正常工作。为此,我们在 Cloud Service ccproj 文件中添加了 AfterBuild Msbuild 步骤来执行复制。

此处发布了更好的解决方法: https://github.com/Azure/azure-sdk-for-net/issues/3699#issuecomment-612306965

这应该添加到您的源项目 csproj 文件中:

 <Target 
Name="BuiltProjectOutputGroupDependencies"
DependsOnTargets="$(BuiltProjectOutputGroupDependenciesDependsOn)"
Returns="@(BuiltProjectOutputGroupDependency)">
<ItemGroup>
<BuiltProjectOutputGroupDependency Include="@(ReferenceCopyLocalPaths->'%(FullPath)');
@(ReferenceDependencyPaths->'%(FullPath)');
@(NativeReferenceFile->'%(FullPath)');
@(_DeploymentLooseManifestFile->'%(FullPath)');
@(ResolvedIsolatedComModules->'%(FullPath)')"/>
</ItemGroup>
</Target>

关于c# - Azure 云服务使用与其辅助角色不同的 nuget 包路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46631113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com