9

我编写了一个简单的 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.
4

4 回答 4

16

目前还不清楚为什么缺少 PowerPacks,.NET 4 客户端配置文件可能是一个问题。周围有多个版本的 PowerPack,版本编号变得一团糟。在我的机器上,相同的版本报告为 v2.0.50727,即使它在 GAC 中存储为版本 10.0

最好的办法是回到你的项目。单击解决方案资源管理器窗口中工具栏上的“显示所有文件”图标。现在显示参考节点。展开它并选择 PowerPacks 参考。在“属性”窗口中,将“复制本地”属性更改为 True。

重建,您的构建目录现在将拥有 DLL 的副本。将其与 EXE 一起复制到目标计算机上。

于 2013-06-16T14:45:29.853 回答
15

这是下载 Microsoft Visual Basic Power Packs 10.0 的 URL

http://go.microsoft.com/fwlink/?LinkID=145727&clcid=0x804

于 2014-04-09T02:06:13.443 回答
1

显然,“PowerPacks”似乎有问题;这些是 Visual Studio 中默认提供的控件的附加控件(在“工具箱”下的表单设计部分)。如果您在目标计算机上安装所需的软件包,一切都应该没问题。

我过去遇到过这个问题,我的建议不依赖于这些元素:它们包括一些不错的功能(在我的例子中,它是一个椭圆形),但可能会被一些工作和更简单的对象所取代。如果您想将您的程序出售给或多或少更广泛的受众,依赖它可能会成为一个问题:默认情况下,该软件包几乎不会安装在任何计算机上,因此您必须要求您的客户继续安装。找到这些特定控件很简单:在“工具箱”上,它们应该列在“PowerPacks”或类似内容下。


在阅读了 Hans Passant 的评论后,我确实记得 .dll 文件必须放在与可执行文件相同的目录中,但我的印象是必须安装提供的链接中的 PowerPacks 包(至少,在没有 Visual Studio 的计算机上)。

于 2013-06-16T14:15:33.193 回答
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 引用添加到程序。然后我退出项目并再次打开它,一切都很好,表格以它们原来的美丽显示。

于 2016-08-03T13:02:58.613 回答