这个问题与编程无关,因为它与部署相关.
我发现自己与公司中的小组进行了很多交谈,他们的工作是维护我们的生产Windows服务器并在其上部署我们的代码.出于法律和合规性的原因,我没有直接的可见性或对服务器的任何控制,因此我可以通过我给该组的指示来确定安装哪个.NET版本的唯一方法.
到目前为止,我可以想到的所有方法都可以告诉我们安装了哪个版本(检查管理工具是否匹配1.1或2.0,检查"添加/删除程序"列表中的条目,检查是否存在c:\ Windows\Microsoft.NET下的目录是有缺陷的(我在管理工具下看到至少一台2.0但没有2.0条目的机器 - 该方法没有告诉你3.0+,"添加/删除程序"列表可能与现实不同步,目录的存在并不一定意味着什么).
鉴于我通常需要提前知道这些事情已经到位(发现"哎呀,这个没有你需要的所有版本和服务包"并不适用于短维护窗口)我必须检查"通过代理",因为我无法直接访问服务器,什么是一个简单的方法来告诉生产Windows服务器上安装了哪个版本的.NET?最好使用框架安装的一些内在方法来实现,因为它会更快,不需要加载某种实用程序,如果框架没有正确安装但仍然有文件就可以肯定会失败的方法(即,有一个目录和gacutil.exe在那里,但该框架的版本并没有真正"安装")
编辑:如果没有一个很好的万无一失的内在方法来构建框架,有没有人知道一个好的,轻量级,无需安装的程序,可以找到这个?我可以想象有人可以轻松地写一个,但如果已经存在,那就更好了.
您应该在要查找此信息的服务器上打开IE,然后访问以下站点:http://www.hanselman.com/smallestdotnet/
这就是全部.
该站点有一个脚本,可以查看您的浏览器的"UserAgent"并找出您安装(或没有)安装的.NET Framework的版本(如果有),并自动显示(如果您选择,则计算总大小)下载.NET Framework).
您可以按照此博客条目以编程方式检查注册表和其他一些内容.
要查看的注册表项是
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...]
从这里找到答案:
检查安装了哪个.NET Framework版本
打开命令提示符并复制粘贴以下命令行之一
dir %WINDIR%\Microsoft.Net\Framework\v*
要么
dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B
微软的方式是这样的:
MSDN:如何确定安装了哪些.NET Framework版本(它指向以下注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...
)
如果你想要万无一失,这是另一回事.我不担心框架文件夹的xcopy.如果有人这样做,我会认为电脑坏了.
最简单的方法是编写一个小程序,使用每个版本的.NET和您关心的库并运行它们.
对于无安装方法,PowerBasic是一个很好的工具.它创建了小的没有运行时所需的exe.它可以自动执行上面MS KB文章中描述的检查.
根据CodeTrawler的回答,解决方案是在资源管理器窗口中输入以下内容:
%SYSTEMROOT%\ Microsoft.NET \框架
然后搜索:
mscorlib.dll中
...并右键单击/转到每个结果的版本选项卡.
http://www.asoft.be/prod_netver.html
使用这个"好,轻,无需安装的程序"