.net 使用Clickonce部署Microsoft.Bcl.Async
我有一个VB.NET应用程序因以下错误而崩溃:.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
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的原因。