【问题标题】:Deploying Microsoft.Bcl.Async w/ Clickonce使用 Clickonce 部署 Microsoft.Bcl.Async
【发布时间】:2013-09-01 03:35:18
【问题描述】:

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

System.IO.FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. File name: 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

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

System.Threading.Tasks 在 Copy Local 设置为 true 的两个项目中都被引用。 Microsoft.Threading.Tasks 在 Copy Local 设置为 true 的两个项目中都被引用。我已经看到the other thread 对此进行了介绍,它已安装在相关项目中。这些是我的 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>

我在设置时缺少什么?如果您需要更多信息,请告诉我。谢谢!

【问题讨论】:

    标签: .net vb.net asynchronous base-class-library


    【解决方案1】:

    我在项目网站上找到了一个解决方法:

    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.重新发布

    【讨论】:

      【解决方案2】:

      单击一次将仅包含 3 个主 DLL 的 Microsoft.Threading.Tasks.dllMicrosoft.Threading.Tasks.Extensions.dllMicrosoft.Threading.Tasks.Extensions.Desktop.dll

      但是,当您添加未包含在可分发 System.Runtime.dllSystem.Threading.Tasks.dll 中的 nuget 包时,还有一些 DLL 是另外两个依赖项,您可以看到这两个的 Path 属性引用在您的项目中,而不是在正常位置。

      我不完全确定如何解决它,但至少现在你知道问题所在了。

      【讨论】:

      • 我在我的参考文献列表中看到了System.Runtime.dllSystem.Threading.Tasks.dll。什么是“正常”位置与“非正常”位置?
      • 正常位置是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\ ,NuGet 包需要用它的本地副本替换这两个程序集,这就是它使用那些特殊 dll 的原因。
      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      相关资源
      最近更新 更多