在未安装 .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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在未安装 office 的情况下从 winform vb.net 2008 导出到 excel?
是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?