1

我正在尝试将 Awesomium 嵌入到我的项目可执行文件中。在 Awesomium 的文档中,他们说将您项目的目标平台设置为X86. 这是否意味着只有Unmanaged32Assemblies可用?

我将此行添加到FodyWeaver.xml文件中:

<Costura Unmanaged32Assemblies='Awesomium.Core|Awesomium.Windows.Forms'/>

但我有一个例外说:

System.TypeInitializationException was unhandled
Message: An unhandled exception of type 'System.TypeInitializationException' occurred in mscorlib.dll
Additional information: The type initializer for '<Module>' threw an exception.

我也试过这个:

<Costura 
    Unmanaged32Assemblies='Awesomium.Core|Awesomium.Windows.Forms' 
    Unmanaged64Assemblies='Awesomium.Core|Awesomium.Windows.Forms' />

但是抛出了完全相同的异常。

更新

也试过这个:

<Costura 
    Unmanaged32Assemblies='awesomium' 
    Unmanaged64Assemblies='awesomium'/>

和这个:

<Costura 
    Unmanaged32Assemblies='awesomium'/>

它使我的 exe 文件大了大约 4 MB,但又抛出了同样的异常

4

1 回答 1

0

如果您尝试嵌入的程序集Unmanaged32Assemblies不是混合模式程序集,则该方法将不起作用。

相反,请尝试在您的文件中添加类似这样的.csproj内容:

<ItemGroup>
  <EmbeddedResource Include="..\packages\path\to\awesomium.dll">
    <LogicalName>costura32.%(Filename)%(Extension)</LogicalName>
    <Visible>false</Visible>
  </EmbeddedResource>
</ItemGroup>

Costura 将在加载时找到此资源并将其解压缩到临时目录,以便您的应用程序能够找到/加载它。

于 2016-04-14T05:48:27.047 回答