使用Clickonce部署Microsoft.Bcl.Async

6
我有一个VB.NET应用程序,出现以下错误崩溃:

System.IO.FileNotFoundException: 无法加载文件或程序集“System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其某个依赖项。系统找不到指定的文件。 文件名:“System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”

我正在尝试使用Microsoft.Bcl.Async库。我已通过Nuget在实际使用异步/等待调用和引用它的项目上安装了它。在我的计算机上一切都很完美,但是当我发布并在另一台计算机上测试时,当我尝试使用使用异步/等待的部分时,我的程序会崩溃。

System.Threading.Tasks在两个项目中都引用,并将复制本地设置为true。Microsoft.Threading.Tasks在两个项目中都引用,并将复制本地设置为true。我看到了关于此问题的其他线程,并在相关项目中安装了它。以下是包含在我的app.config文件中的行:

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
  </dependentAssembly>

我在设置中错过了什么?如果您需要更多信息,请告诉我。谢谢!
2个回答

9
我在项目网站上找到了一个解决方法: http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx 解决方案
这是因为ClickOnce未能部署某些必需的程序集。作为解决方法,请按照以下步骤操作:
1.右键单击项目,选择添加现有项。
2.浏览到Microsoft.Bcl net40包文件夹。
3.在“文件名”文本框中输入
4.按住CTRL键,选择System.Runtime.dll和System.Threading.Tasks.dll。
5.单击添加按钮旁边的向下箭头,并选择添加为链接。
6.在“解决方案资源管理器”中,按住CTRL选择System.Runtime.dll和System.Threading.Taks.dll。
7.右键单击所选内容,选择属性,并将“复制到输出目录”更改为始终复制。
8.重新发布。

1

点击一次仅会包括3个主要的DLL文件Microsoft.Threading.Tasks.dllMicrosoft.Threading.Tasks.Extensions.dllMicrosoft.Threading.Tasks.Extensions.Desktop.dll

enter image description here

然而,当您添加nuget包时,还有一些DLL是两个其他依赖项,它们不包含在可分发文件中,这些DLL是System.Runtime.dllSystem.Threading.Tasks.dll。您可以看到这两个引用的Path属性位于您的项目内部,而不是正常位置。

enter image description here

我不确定如何修复它,但至少现在你知道问题所在。

我在我的引用列表中看到了 System.Runtime.dllSystem.Threading.Tasks.dll。什么是“正常”位置和“非正常”位置? - Cuthbert
正常的位置应该是 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\,NuGet 包需要用它本地的副本替换这两个程序集,这就是为什么它使用这些特殊的 dll 的原因。 - Scott Chamberlain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接