小编Gre*_*mil的帖子

如何强制编译为.NET Framework 4的应用程序在.NET Framework 4.6.1下运行?

我做了大量的研究,没有找到任何合适的答案.这是场景.

我有一个编译为目标.NET Framework 4的应用程序.在运行时,我希望该应用程序实际在.NET Framework 4.6.1中执行.到目前为止我找到了两个选项.

  1. 在.NET Framework 4.6.1下重新编译应用程序
  2. 将configuration/startup/supportedRuntime元素添加到app.config,版本="v4.0"sku =".NETFramework,Version = v4.6.1"

选项1是不可取的,因为它需要重新发布软件.

选项2没有达到我的预期.它似乎检查是否安装了CLR 4.0(不是框架4.0),如果没有提示下载适当的SKU来安装它.安装后,应用程序仍在.NET Framework 4.0下执行

作为测试,以及发布此问题的原因,我创建了一个小型控制台应用程序,它只是这样做

Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol);
Run Code Online (Sandbox Code Playgroud)

如果是针对.NET Framework 4编译的,则输出为

Ssl3,Tls

如果是针对.NET Framework 4.6.1编译的,则输出为

Tls,Tls11,Tls12

.net clr

8
推荐指数
1
解决办法
3570
查看次数

为什么在案例1中转换操作失败但在案例2中成功?

情况1产生类型不匹配异常.案例2按预期工作.有谁有洞察原因?或者从Int32作为对象转换为Int16的更好方法?

情况1:

var i = (Int16)(object)Int32.Parse("1");
Run Code Online (Sandbox Code Playgroud)

案例2:

var i = (Int16)Int32.Parse("1");
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
1
解决办法
152
查看次数

泛型函数,泛型类型是任何接口

我想用通用约束实现泛型函数,传入的Type是一个接口.这可能在C#中吗?我没有约束它工作正常,但如果它不是一个接口,代码将在运行时失败,所以我想让编译时检查.

public T MyFunction<T> where T : {any interface type} { return null; }
Run Code Online (Sandbox Code Playgroud)

c# generics interface

3
推荐指数
2
解决办法
931
查看次数

标签 统计

c# ×2

.net ×1

clr ×1

generics ×1

interface ×1