WebView2Loader.dll 未找到 Outlook VSTO 插件
WebView2Loader.dll not found is Outlook VSTO addin
我阅读了有关 WebView2Loader.dll - 找不到文件的问题,但无法解决我的问题:
带有 FormRegion 的简单 Outlook VSTO 加载项,
在 FormRegion 中,我放置了 WebView2 控件,并对其进行了初始化:
private async void FormRegionWebView2_FormRegionShowing(object sender, System.EventArgs e)
{
await InitializeCoreWebView2Async(webView2Ctrl, @"C:\temp");
webView2Ctrl.Source = new Uri("http://www.bing.com");
}
public async Task InitializeCoreWebView2Async(WebView2 wv, string webCacheDir)
{
CoreWebView2EnvironmentOptions options = null;
CoreWebView2Environment webView2Environment = null;
webView2Environment = await CoreWebView2Environment.CreateAsync(null, webCacheDir, options);
await wv.EnsureCoreWebView2Async(webView2Environment);
}
本机 dll 在 bin\Debug\runtimes 文件夹中,
但我仍然得到 'WebView2Loader.dll': 在 InitializeCoreWebView2Async() 中找不到指定的模块
代码如下:
https://github.com/MicrosoftEdge/WebView2Feedback/files/8117191/OutlookAddInWithWebView.zip
如有任何帮助,我们将不胜感激。
首先,确保MSDN中的WebView2 Runtime is installed on the system. You can read more about that in the WebView2 Runtime installation部分。
WebView2Loader.dll
是本机和 architecture-specific 二进制文件,因此您需要包含您希望您的应用 运行 包含的此二进制文件的所有版本。例如:
- 对于 x86,您将包含 WebView2Loader.dll 的 x86 版本。
- 对于使用
AnyCPU
的托管应用程序,您将包括 WebView2Loader.dll 的 x86、x64 和 arm64 版本。 WebView2Loader.dll 的正确版本是从相应的 architecture-specific 文件夹加载的。
确保包含了所有必需的 platform-specific 程序集。在 Files to ship with the app 文章中阅读更多相关信息。
顺便说一句,我发现了一个类似的问题 - Unable to load DLL 'WebView2Loader.dll': The specified module could not be found.。这与您描述的非常接近。
事实证明,Outlook 无法从运行时文件夹中获取 WebView2Loader.dll,
它必须在输出目录本身。
指定平台目标(到 x86)是不够的,dll 仍然只在运行时。
(目标框架是:.NET framework 4.7.2)
仅从 nuget packages.config 迁移到 PackageReference(如此处所述:https://docs.microsoft.com/en-us/nuget/consume-packages/migrate-packages-config-to-package-reference)
并指定平台目标
导致 dll 被复制到输出目录 (bin\Debug)。
我们必须准备两个单独的 ClickOnce 安装程序,一个用于 x86,一个用于 x64,
但现在 Outlook 找到了 dll,WebView2 在 FormRegion 中显示网页。
更新: 实际上这还不足以将 WebView2Loader.dll 添加到 ClickOnce application_files。
为此,我必须将 dll 定义为 csproj 文件中的内容:
在Visual Studio (2022)“卸载项目”中,然后“编辑项目文件”以获取add-in的.csproj为xml,并添加以下内容:
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)bin$(Configuration)\runtimes\win-$(EffectivePlatform)\native\WebView2Loader.dll">
<Link>%(Filename)%(Extension)</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>false</Pack>
</Content>
</ItemGroup>
重新加载和发布后,Loader dll 位于 ClickOnce 安装程序应用程序文件中,add-in 可以分发。
我阅读了有关 WebView2Loader.dll - 找不到文件的问题,但无法解决我的问题:
带有 FormRegion 的简单 Outlook VSTO 加载项, 在 FormRegion 中,我放置了 WebView2 控件,并对其进行了初始化:
private async void FormRegionWebView2_FormRegionShowing(object sender, System.EventArgs e)
{
await InitializeCoreWebView2Async(webView2Ctrl, @"C:\temp");
webView2Ctrl.Source = new Uri("http://www.bing.com");
}
public async Task InitializeCoreWebView2Async(WebView2 wv, string webCacheDir)
{
CoreWebView2EnvironmentOptions options = null;
CoreWebView2Environment webView2Environment = null;
webView2Environment = await CoreWebView2Environment.CreateAsync(null, webCacheDir, options);
await wv.EnsureCoreWebView2Async(webView2Environment);
}
本机 dll 在 bin\Debug\runtimes 文件夹中,
但我仍然得到 'WebView2Loader.dll': 在 InitializeCoreWebView2Async() 中找不到指定的模块
代码如下: https://github.com/MicrosoftEdge/WebView2Feedback/files/8117191/OutlookAddInWithWebView.zip
如有任何帮助,我们将不胜感激。
首先,确保MSDN中的WebView2 Runtime is installed on the system. You can read more about that in the WebView2 Runtime installation部分。
WebView2Loader.dll
是本机和 architecture-specific 二进制文件,因此您需要包含您希望您的应用 运行 包含的此二进制文件的所有版本。例如:
- 对于 x86,您将包含 WebView2Loader.dll 的 x86 版本。
- 对于使用
AnyCPU
的托管应用程序,您将包括 WebView2Loader.dll 的 x86、x64 和 arm64 版本。 WebView2Loader.dll 的正确版本是从相应的 architecture-specific 文件夹加载的。
确保包含了所有必需的 platform-specific 程序集。在 Files to ship with the app 文章中阅读更多相关信息。
顺便说一句,我发现了一个类似的问题 - Unable to load DLL 'WebView2Loader.dll': The specified module could not be found.。这与您描述的非常接近。
事实证明,Outlook 无法从运行时文件夹中获取 WebView2Loader.dll, 它必须在输出目录本身。
指定平台目标(到 x86)是不够的,dll 仍然只在运行时。 (目标框架是:.NET framework 4.7.2)
仅从 nuget packages.config 迁移到 PackageReference(如此处所述:https://docs.microsoft.com/en-us/nuget/consume-packages/migrate-packages-config-to-package-reference) 并指定平台目标 导致 dll 被复制到输出目录 (bin\Debug)。
我们必须准备两个单独的 ClickOnce 安装程序,一个用于 x86,一个用于 x64, 但现在 Outlook 找到了 dll,WebView2 在 FormRegion 中显示网页。
更新: 实际上这还不足以将 WebView2Loader.dll 添加到 ClickOnce application_files。
为此,我必须将 dll 定义为 csproj 文件中的内容:
在Visual Studio (2022)“卸载项目”中,然后“编辑项目文件”以获取add-in的.csproj为xml,并添加以下内容:
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)bin$(Configuration)\runtimes\win-$(EffectivePlatform)\native\WebView2Loader.dll">
<Link>%(Filename)%(Extension)</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>false</Pack>
</Content>
</ItemGroup>
重新加载和发布后,Loader dll 位于 ClickOnce 安装程序应用程序文件中,add-in 可以分发。