【问题标题】:How to include grpc_csharp_ext.x86.dll with Fody/Costura?如何在 Fody/Costura 中包含 grpc_csharp_ext.x86.dll?
【发布时间】:2020-07-19 01:14:35
【问题描述】:

期待这篇文章和问题:

1) https://idmedia.no/general/including-sqlite-interop-dll-into-your-c-project/

2) https://github.com/Fody/Fody/issues/673

无法解决问题。有没有人遇到过类似的问题?

Costura/Fody 不能包含 grpc_csharp_ext.x86.dll。 因为它是运行时 .dll 有关系吗?

图片 1) 忽略此消息检查互联网连接它只是我的后缀句。 .

.

.

.

图 2) 即不包含在内的 .dll。 .

.

.

.

图片 3) 这些是解决方案项目中的 dll,如链接 1) 设置为 EmbededResource 但仍无法正常工作。 .

.

.

.

这是我的 FodyWeavers.xml

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura IgnoreSatelliteAssemblies='true'
           Unmanaged32Assemblies='grpc_csharp_ext'
           Unmanaged64Assemblies='grpc_csharp_ext'>
  </Costura>
</Weavers>

【问题讨论】:

  • 您是否尝试反编译最终的 dll 以查看 dll 是否真的丢失?好像是链接错误。
  • 是的,我反编译了,但是我项目中的另一个 dll Grpc.Core.dll 需要那个特定的 dll,是的,反编译后最终的 .exe 中没有 grpc_csharp_ext.dll。还有什么建议。我已经尝试添加 grpc_csharp_ext.dll 作为对项目的引用,但我给了我错误:无法添加。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。

标签: c# grpc fody fody-costura


【解决方案1】:

我在构建使用 gRPC 的 .NET 应用程序时遇到了同样的问题。我发现如果我没有在存储库的根目录中包含 global.json 文件并明确说明我要使用的 SDK 版本,则构建将只使用默认的 SDK 版本,由于某种原因,它没有t 在输出文件夹中包含 grpc_csharp_ext.x86.dll。

我建议将该文件包含在您的解决方案中,然后尝试构建它。

示例 global.json 文件:

{
  "sdk": {
    "version": "2.2.207"
  }
}

如果您不想要此文件,您还可以创建一个 powershell 脚本来创建文件、构建(或发布)解决方案,然后删除该文件:

dotnet new globaljson --sdk-version 2.2.207
try
{
    dotnet build ... (or dotnet publish ...)
}
finally
{
    Remove-Item .\global.json
}

【讨论】:

  • 感谢您的回答,我使用 ClickOnce 和安装程序方法,而不是 Costura/Fody,但如果我会使用 Costura/Fody,我会试试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
相关资源
最近更新 更多