11

我安装了 Visual Studio 2012 并发布了我们的一个应用程序,它针对 .NET 4.0 框架。由于这些机器上的设置,我们目前无法定位 4.5。我们还使用“从与我的应用程序相同的位置下载先决条件”功能。

从 Visual Studio 2012 进行部署时,出现以下错误:

要在先决条件对话框中启用“从与我的应用程序相同的位置下载先决条件”,您必须将项目“Microsoft .NET Framework 4(x86 和 x64)”的文件“DotNetFX40\dotNetFx40_Full_x86_x64.exe”下载到本地计算机。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883

如果您转到该链接,它会告诉您导航到 Package.xml 文件,并找到实际先决条件的链接。就我而言,它应该转到http://go.microsoft.com/fwlink/?linkid=182805。它使用该链接下载了一个名为 dotNetFx40_Full_setup.exe 的包。我把它放在/Packages/DotNetFX40文件夹里。

当尝试从 Visual Studio 2012 再次发布时,我遇到了同样的错误。它似乎不喜欢这个文件。

如果我现在使用 Visual Studio 2010 将相同的应用程序发布到相同的位置,它仍然可以正常工作。

我怎样才能让它与 Visual Studio 2012 一起工作?

4

4 回答 4

9

我遇到了同样的问题。

将下载到 C:\Program Files\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\DotNetFX40 目录的 dotNetFx40_Full_setup.exe 文件重命名为 dotNetFx40_Full_x86_x64.exe。

执行此操作后,我能够成功发布我的应用程序。

于 2012-08-29T15:23:00.610 回答
8

我相信您可以从以下位置下载正确的安装程序dotNetFx40_Full_x86_x64.exe

http://www.microsoft.com/en-us/download/details.aspx?id=17718

(而不是按照 Brian 的建议重命名 .NET Framework 4 安装程序)。将其放在C:\Program Files\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\DotNetFX40目录中。我在 .NET 客户端配置文件设置中遇到了类似的问题。在我的情况下,按照 Microsoft MSDN 帮助,我误入了错误的安装程序。

于 2013-03-15T17:51:32.730 回答
0

我有一个类似的问题。

MSDN 文档http://msdn.microsoft.com/en-us/library/ms165429(v=vs.110).aspx中指定的注册表项指向目录 c:\Program Files (x86)\Microsoft SDKs\Windows \v7.0A\Bootstrapper\ 作为不正确的包目录。

Visual Studio 2012 在 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages 目录中寻找包。乍一看,包似乎在包目录中,但只有包文件夹在那里,每个包文件夹中都缺少可执行文件。例如,DotNetFX40Client 子目录位于 packages 文件夹中,但 DotNetFX40Client 文件夹中缺少文件 dotNetFx40_Client_x86_x64.exe。

于 2014-01-14T20:09:30.767 回答
0

Visual Studio 2012 破坏了 ClickOnce 安装程序,如果您甚至让 Visual Studio 2012 更新您的应用程序而不告诉您它不再受支持的话。

如果您设法像以前一样升级您的解决方案,您会发现 ClickOnce 实际上发布得很好。只是先决条件无法安装,因此导致安装失败。如果您仍然拥有 Visual Studio 2012 从未接触过的代码的 Visual Studio 2010 副本,即使您通过源代码管理使用 Visual Studio 2012 编写的代码更新代码,您仍然可以通过该副本进行构建。只要该构建保持不变,它就会继续工作,但如果 Visual Studio 2012 专门获得了该副本上的任何 ClickOnce 文件,它将无法找到依赖项。

我决定利用它仍然发布和构建一个自定义工具的事实,只要它可以构建,它就可以安装和运行任何 ClickOnce 应用程序。它可以安装到任何位置,根据需要提升,安装任何列出的先决条件(开发人员控制),并创建桌面和开始菜单条目,然后运行更新程序,像 ClickOnce 那样执行智能更新(只更新必要的文件以避免过多的带宽使用)。我还在调试环境中内置了更新源选择器。

这只需要将两个 EXE 文件放入发布文件夹,然后从第三方安装程序安装,而不是 ClickOnce 安装程序。这给了我更多的功能(我可以让它做我想做的事,多线程安装程序/更新程序,开发人员回滚的降级功能)以及更改更新程序(主题)或安装完成方式的自由。

对于那些看到我的执行顺序是“假 exe 快捷方式”---> 更新程序 ---> exe 的人,您会注意到这实际上会破坏固定,因为您会固定更新程序,而不是 EXE 文件,所以我使应用程序仅使用“/updated”参数运行,如果不存在,应用程序本身必须运行同一文件夹中存在的更新程序 EXE 文件(仅显示是否有要更新的文件),然后更新并使用正确的命令参数再次启动原始 EXE 文件。固定现在工作,因为您只打开 EXE 文件。(这也提供了通过将命令参数放入 TargetPath 来跳过更新的能力,并且最重要的是最终用户一无所知,因为它是后台进度并且安装程序是专业的和品牌的)。

于 2014-01-16T14:20:44.150 回答