Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用Clickonce部署Microsoft.Bcl.Async_.net_Vb.net_Asynchronous_Base Class Library - Fatal编程技术网

.net 使用Clickonce部署Microsoft.Bcl.Async

.net 使用Clickonce部署Microsoft.Bcl.Async,.net,vb.net,asynchronous,base-class-library,.net,Vb.net,Asynchronous,Base Class Library,我有一个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

我有一个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在实际使用异步/等待调用的项目和引用它的项目上安装了它。在我的计算机上,一切都能正常工作,但是当我在另一台计算机上发布和测试时,当我试图使用其中使用Async/Await的部分时,我的程序崩溃了

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>


我在设置这个时遗漏了什么?如果你需要更多信息,请告诉我。谢谢大家!

单击一次将仅包括3个主DLL
Microsoft.Threading.Tasks.DLL
Microsoft.Threading.Tasks.Extensions.DLL
,以及
Microsoft.Threading.Tasks.Extensions.Desktop.DLL

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


我不完全确定如何修复它,但至少现在你知道问题出在哪里了。

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

决议

这是因为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.重新发布

我在参考文献列表中看到了
System.Runtime.dll
System.Threading.Tasks.dll
。“正常”位置与“非正常”位置的区别是什么?正常位置应该是
C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.0\
NuGet软件包需要将这两个程序集替换为其本地副本,这就是它使用这些特殊dll的原因。