2

我有一些 C# Web 服务(WCF)的代码并使用 puppeteer-sharp 库。首先,应创建页面,相关方法位于名为 SayfaOlustur() 的下方。但是我遇到了 System.IO.FileLoadException 异常行 LaunchOptions。

这段代码在我的本地机器和 TestProject 上工作(在 TestClass 中使用了 TestMethods),但是在发布整个代码页后没有创建并抛出 System.IO.FileLoadException 和 System.Value 异常。

System.Value.dll 包含在项目参考和 bin 文件夹中。

public static async Task<Page> SayfaOlusturAsync()
    {
        Browser browser = null;
        try
        {
            var filePath = ConfigurationManager.AppSettings["PuppeterSharpBrowserFetcherLocalChromium"].ToString();
            var browserFetcher = new BrowserFetcher(new BrowserFetcherOptions
            {
                Path = string.IsNullOrEmpty(filePath) ? @"C:\PuppeteerSharpLocalChromium" : filePath
            });
            await browserFetcher.DownloadAsync(BrowserFetcher.DefaultRevision);
            var options = new LaunchOptions
            {
                Headless = true,
                ExecutablePath = @"C:\PuppeteerSharpLocalChromium\Win64-674921\chrome-win\chrome.exe"
            };
            browser = await Puppeteer.LaunchAsync(options);
        }
        catch (Exception ex)
        {
            HelperUtils.CmsLogger.Error(ex, "SayfaOlusturAsync");
        }

        return await browser.NewPageAsync();
    }

预期结果是使用 Chronumium 创建一个页面

异常详情

System.IO.FileLoadException:'无法加载文件或程序集“System.ValueTuple,Version=0.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。

4

2 回答 2

0

System.ValueTuple在 .NET 4.7 中添加。将您的项目升级到 4.7 将是最简单的。

如果您不能,但您的项目针对的是 4.5+ 但低于 4.7 的版本,那么您可以安装System.ValueTuple NuGet 包。如果您在那里遇到任何问题,请参阅此答案

于 2019-09-12T17:10:38.950 回答
0

我用这些步骤解决了这个问题。评估了所有解决方案。

1-) 我将 .NET Framework 4.7 升级为目标版本。

2-) 我将这段代码(属性组)添加到项目的 .csproj 文件中

<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>

3-) 然后将这段代码添加到项目的应用程序或网络配置文件中。

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> </dependentAssembly> </assemblyBinding> </runtime>

4-) 然后构建项目并且它工作。

PS。为了安装和使用 PuppeteerSharp,框架版本至少为 4.6.1。

于 2019-09-16T12:05:18.000 回答