在未安装 .Net Framework 的情况下运行 c# 3 应用程序?

Posted

技术标签:

【中文标题】在未安装 .Net Framework 的情况下运行 c# 3 应用程序?【英文标题】:Run c# 3 app without .Net Framework installed? 【发布时间】:2010-10-05 14:24:44 【问题描述】:

这似乎是一个愚蠢的问题,但是使用 c# 3 (.Net Framework 3.5) 构建的应用程序可以构建并部署到没有安装 3.5 框架的机器上吗?即 bin 部署是否适用于 System.Core 和其他 3.5 dll?

我真的很想使用 lambdas、linq、Func 等构建我的应用程序,但我的客户不允许在他们的机器上安装 3.0 或 3.5 框架(他们确实安装了 2.0 框架)。

【问题讨论】:

我不知道这个问题的答案,但我知道在 .NET Framework 可再发行包之外分发这些核心 DLL 违反许可协议 - 所以即使有可能,这是不明智的。 【参考方案1】:

不,不可能。它不像复制正确的 dll 并将它们与您的应用程序一起发送那么简单。

话虽如此,如果您的应用程序没有使用很多“新”功能,您可以使用 Mono 来部署您的应用程序。 Mono 是一个开源的,我猜它的头比 .net 框架要小。

【讨论】:

【参考方案2】:

这可以通过一些应用程序虚拟化产品来完成。我知道我们在几年前使用Thinstall 部署了一个.Net 应用程序,而无需强制用户安装.net(它是一个CD 自动播放应用程序)。

【讨论】:

【参考方案3】:

您可以使用 C# 3.0 并以 .NET 2.0 为目标。以下 C# 3.0 功能完美运行:

隐式类型的局部变量 (var) 匿名类型 Lambda 表达式转换为委托(尽管您不会有 Func/Action 委托 - 不过您可以自己定义这些) 集合初始化器 对象初始化器 隐式类型数组 部分方法 自动属性

扩展方法需要 System.Core 的属性,但您可以定义自己的属性。 如果可以调用正确的方法,则查询表达式将起作用 - 例如,您可以部署 LINQBridge 并且仍然拥有 LINQ to Objects。

很遗憾,表达式树根本不起作用。

更多信息请参见my article on .NET versions。

不要尝试在 2.0 系统之上部署 bits 3.0 或 3.5。

【讨论】:

【参考方案4】:

我不确定,但我认为你可以试试Static Compilation in Mono

【讨论】:

以上是关于在未安装 .Net Framework 的情况下运行 c# 3 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章