Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
C# 如何在Windows 7和Windows 8上构建默认支持的.NET应用程序?_C#_.net_Windows 8 - Fatal编程技术网

C# 如何在Windows 7和Windows 8上构建默认支持的.NET应用程序?

C# 如何在Windows 7和Windows 8上构建默认支持的.NET应用程序?,c#,.net,windows-8,C#,.net,Windows 8,使用Visual Studio 2013 Pro,我构建了我的第一个小型控制台应用程序。这个控制台应用程序应该可以在我们网络中的每台计算机上快速运行。我们至少运行Windows XP SP3到Windows 8.1 因此,我创建了一个以.NET2.0为目标的应用程序,但令我惊讶的是,一台Windows8计算机抱怨它必须为此安装/激活.NET3.5。默认情况下,Windows 8没有激活此选项 当我以2.0为目标时,它在我们所有的XP和W7设备上运行,但在W8上不运行。 当我以4.0为目标时,它在

使用Visual Studio 2013 Pro,我构建了我的第一个小型控制台应用程序。这个控制台应用程序应该可以在我们网络中的每台计算机上快速运行。我们至少运行Windows XP SP3到Windows 8.1

因此,我创建了一个以.NET2.0为目标的应用程序,但令我惊讶的是,一台Windows8计算机抱怨它必须为此安装/激活.NET3.5。默认情况下,Windows 8没有激活此选项

当我以2.0为目标时,它在我们所有的XP和W7设备上运行,但在W8上不运行。 当我以4.0为目标时,它在所有W8和一些W7上运行,但在XP上不运行

这是同一个应用程序。。那么,真的没有办法告诉操作系统使用可用的框架吗

我已尝试将配置文件“MyAppName.exe.config”和“App.config”添加到包含以下内容的项目中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

我交换了订单,针对.NET 2.0、3.0、3.5和3.5客户端配置文件。 但当不以>=.NET4为目标时,W8会不断要求激活.NET3.5


当客户端安装了.NET 2.0或更高版本时,我如何让这个小应用程序在XP SP3、W7和W8上运行,而不需要安装任何额外的框架???

我相信您只是错过了
启动元素:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

只需使用此配置尝试使用目标版本3.5再次构建它


在其他选择中的一个。您是否在Windows XP和Windows 8上安装了.NET Framework 4.0?如果是这样,您可以在构建应用程序时尝试将此版本用作目标版本。

我目前已通过在可执行文件前面放置批处理文件解决了此问题:

@ECHO OFF
IF EXIST "%systemroot%\Microsoft.NET\Framework\v4.0.30319" (
  %~dp0MyApp40.exe %*
) ELSE (
  %~dp0MyApp20.exe %*
)
但这当然不是一个理想的解决方案!
那么真的没有其他方法来打包必要的.NET4文件了吗?如果是的话。。有没有人提供了一个简短而简单的指南来说明如何做到这一点?

如果您不想支持v2.0.50727,请不要包括在内:)这就是重点。。我需要支持它。订单非常重要,你必须把v4.0放在第一位。如果仍然有问题,那么假设.config文件由于某种原因没有被使用。比如把名字弄错了。汉斯,即使先用v4,也不行。配置文件名为app.config和nameofMyProject.exe.config。它在任何目标构建中都不起作用。您确定这在没有指定目标框架的Win8中可以工作吗?很好。。但它仍然不起作用。我已经更新了上面的问题。Framework 4.0未安装在(所有)XP上,在使用3.5 W8构建时complains@TieleDeclercq只是为了验证一下,您是否确定在尝试启动应用程序时,此MyApplication.exe.config文件与您的MyApplication.exe文件位于同一目录中?您需要在启动时(而不是在编译时)真正地使用它??我在MS上读到这个文件必须在我的解决方案的根目录中,所以我认为这必须是一个嵌入文件?!所以必须在本地复制?下午我会试试这个。。。这确实很有意义。@TieleDeclercq当您将应用程序配置文件添加到项目中时,VS将其添加为app.config,同时VS设置特殊配置以将此名为[ApplicationName].exe.config的文件复制到输出目录中。之后,您有责任将此文件和可执行文件带到您需要的每台机器上。