我编写了一个简单的VB.NET应用程序,它在开发机器上运行良好。
但是在另一台机器上,即使安装了.NET Framework,它也会在启动时因System.InvalidOperationException而崩溃。
它找到Visual Basic程序集似乎有问题。
这是其中一个失败(我用三个点替换了敏感信息):
*** Assembly Binder Log Entry (16/06/2013 @ 15:45:12) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable C:\Users\....
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = ...
LOG: DisplayName = Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///C:/Users/......
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = MSystemAdmin.exe
Calling assembly : MSystemAdmin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs.DLL.
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs/Microsoft.VisualBasic.PowerPacks.Vs.DLL.
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs.EXE.
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs/Microsoft.VisualBasic.PowerPacks.Vs.EXE.
LOG: All probing URLs attempted and failed.
答案 0 :(得分:16)
为什么缺少PowerPacks并不清楚,.NET 4 Client Profile可能是一个问题。有多个版本的PowerPacks,版本编号变得一团糟。在我的机器上,同一版本报告为v2.0.50727,即使它作为版本10.0存储在GAC中
最好的办法是回到你的项目。单击解决方案资源管理器窗口中工具栏上的“显示所有文件”图标。现在显示了References节点。展开它并选择PowerPacks参考。在“属性”窗口中,将“复制本地”属性更改为“True”。
重建,您的构建目录现在将拥有DLL的副本。将它与EXE一起复制到目标计算机上。
答案 1 :(得分:15)
以下是下载Microsoft Visual Basic Power Packs 10.0的URL
答案 2 :(得分:1)
显然,“PowerPacks”似乎存在问题;这些是Visual Studio默认情况下的附加控件(在表单设计部分的“工具箱”下)。如果您在目标计算机上安装required package,一切都应该没问题。
我过去遇到过这个问题,我的建议并不是依赖于这些元素:它们包含了很好的功能(在我的例子中,它是一个椭圆形的形状),但可能会被一些工作所取代,并且更简单对象。如果您想将您的程序出售给或多或少的广泛受众,依赖于此可能会成为一个问题:默认情况下,几乎所有计算机上都没有安装此软件包,因此您必须要求您的客户继续安装。找到这些特定控件很简单:在“工具箱”上,它们应列在“PowerPacks”或类似名称下。
在阅读Hans Passant的评论后,我确实记得.dll文件必须放在与可执行文件相同的目录中,但我的印象是无论如何都必须安装所提供链接的PowerPacks软件包(至少,在没有Visual Studio的计算机上。)
答案 3 :(得分:0)
我在新的Windows 10计算机上将Visual Studio从Visual Studio 2013升级到Visual Studio 2015。这样,我将我的Projects文件夹从Windows 7计算机复制到Windows 10计算机上的相同路径。
当我打开一个使用MS.VB.PowerPacks.VS的项目时,我被告知无法找到该文件。我下载了MS.VB.PowerPacks.VS版本12.0.0.0的最新安装。 Visual Studio 2015删除了使用PrintForm的表单页面并通知我:
System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.VisualBasic.PowerPacks.VS,版本10.0.0.0。
我更改了对vcersion 12.0.0.0的引用,但仍然无法识别。
我的修复:我将C:\Program Files(x86)\Reference Assemblies\Microsoft\VBPowerPacks\v10.0
文件夹从我的Windows 7计算机复制到我的Windows 10计算机,然后删除了v12.0.0.0参考,并将v10.0.0.0引用添加到该程序中。然后我退出了项目并再次打开它,一切都很顺利,表格以原始的美丽展示。