문제

야 프로그래밍 방식으로 결정 여부.NET3.5 설치된 것입니다.나는 쉽게 될 것이라고 생각:

<% Response.Write(Environment.Version.ToString()); %>

을 반환하는"2.0.50727.1434"이렇게 아무런 행운...

내 연구가 있다는 것을 몇몇 오히려 모 레지스트리 키에 나는 볼 수 있지만 나는 확실하지 않는 경우는 이동 경로.누군가가 어떤 제안이 있는가?

도움이 되었습니까?

해결책

시도할 수 있습니다:

static bool HasNet35()
{
    try
    {
        AppDomain.CurrentDomain.Load(
            "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
        return true;
    }
    catch
    {
        return false;
    }
}

@:좋은 질문,그리고 노니다.

Kev

다른 팁

는 기술적이다.NET3.5 의 확장 2.0framework.는 가장 빠른 방법을 포함 어셈블리에서.NET3.5 면 그것이다.

System.Web.Extensions

좋은 어셈블리는 버전에 포함된 3.5.또한 것 같은 사용 ASP.NET 이 확인이 정말로 당신을 제한할 것이기 때문에 체크인하실 수 없습의 파일 시스템이나 레지스트리에서 실행되는 보호의 모드를 ASP.NET.또는 당신은 항상 문제가 될 정도로드 어셈블리에서의 GAC 할 수 있습니다.NET3.5,그러나 당신은 실행할 수 있는 문제와 권한을 다시합니다.

이 중 하나가 될 수 있습 그 시간을 당신은 자신에게 물어"나는 무엇을 하려고 달성하기까?"라고 볼 수 있다면 대체 노선이 있습니다.

@Kev,정말 좋아하는 솔루션을 제공합니다.도움을 주셔서 감사합니다.

레지스트리를 사용하는 코드는 다음과 같이 보일 것이다:

RegistryKey key = Registry
        .LocalMachine
        .OpenSubKey("Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5");
return (key != null);

나는 것이 궁금하는 경우 하나의 작품에서는 보통 신뢰 환경(지만 나는 작업 전체에서 신뢰하게 중요하지 않아 내가 현재 작업 중에서).

@komradekatz 솔루션은 아래에서 MSDN 편의를 위해 다른 사람을 위해 찾고 있습니다.내가 좋아하지 않는 이 솔루션을 사용하기 때문에 사용자 에이전트 버전을 확인합니다.이것이 가능한가요(내가 쓰는 클래스 라이브러리를 알아야지.NET3.5 가 설치되).또한 질문은 얼마나 신뢰할 수 있는 이 솔루션을 증명할 수 있습니다.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>
  <HEAD>
    <TITLE>Test for the .NET Framework 3.5</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var dotNETRuntimeVersion = "3.5.0.0";

    function window::onload()
    {
      if (HasRuntimeVersion(dotNETRuntimeVersion))
      {
        result.innerText = 
          "This machine has the correct version of the .NET Framework 3.5."
      } 
      else
      {
        result.innerText = 
          "This machine does not have the correct version of the .NET Framework 3.5." +
          " The required version is v" + dotNETRuntimeVersion + ".";
      }
      result.innerText += "\n\nThis machine's userAgent string is: " + 
        navigator.userAgent + ".";
    }

    //
    // Retrieve the version from the user agent string and 
    // compare with the specified version.
    //
    function HasRuntimeVersion(versionToCheck)
    {
      var userAgentString = 
        navigator.userAgent.match(/.NET CLR [0-9.]+/g);

      if (userAgentString != null)
      {
        var i;

        for (i = 0; i < userAgentString.length; ++i)
        {
          if (CompareVersions(GetVersion(versionToCheck), 
            GetVersion(userAgentString[i])) <= 0)
            return true;
        }
      }

      return false;
    }

    //
    // Extract the numeric part of the version string.
    //
    function GetVersion(versionString)
    {
      var numericString = 
        versionString.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
      return numericString.slice(1);
    }

    //
    // Compare the 2 version strings by converting them to numeric format.
    //
    function CompareVersions(version1, version2)
    {
      for (i = 0; i < version1.length; ++i)
      {
        var number1 = new Number(version1[i]);
        var number2 = new Number(version2[i]);

        if (number1 < number2)
          return -1;

        if (number1 > number2)
          return 1;
      }

      return 0;
    }

    -->
    </SCRIPT>
  </HEAD>

  <BODY>
    <div id="result" />
  </BODY>
</HTML>

내 컴퓨터에서 이 출력:

이 기계는 올바른 버전 니다..NET Framework3.5.

이 기기의 userAgent 문자열은 다음과 같습니다.Mozilla/4.0(compatible;MSIE7.0;Windows NT6.0;SLCC1;.NET CLR 2.0.50727;.NET CLR3.0.04506;InfoPath.2;.NET CLR1.1.4322;.NET CLR3.5.21022;Zune2.5).

또 다른 흥미로운 찾는의 존재는 어셈블리는 여기:

C:\Program Files eference 어셈블리\Microsoft\Framework\v3.5

당신이 생각하는 Microsoft 을 구축 할 것이라 확인을 위한"최신 버전으로"프레임 워크입니다.

필요할 경우 특정 버전입니다.net 을 설치하고 통제할 수 있습 배포 응용 프로그램의,당신은 정말 사용 ClickOnce.그것은 당신에 필요한 최소 버전을 지정합니다..Net framework 설치되어야 하는 것만 확인하면 그것이 설치되도록 모든 당신의 이후의 벤처 기업은 장애가 되지는 불필요한 확인합니다.

또한,ClickOnce 당신 업데이트에 대한 무료입니다.왜 누군가가 그것을 사용하고 싶?

를 설정 ClickOnce 응용 프로그램을 오른쪽 클릭하여 프로젝트를 Visual Studio 내의 갈 게시 설정합니다.이들을 위한 새로운 상품을 구성하여 구축 응용 프로그램의할 수 있는 장소에서 당신의 웹 사이트입니다.사용자가 프로그램을 다운로드,설치 관리자 확인을 위한 전제 조건이 좋아한다.Net 습니다.

한 옵션은 감지하 4.0 버전을 사용하여 문자열:

    Environment.Version.CompareTo(new Version(4, 0));

그런 다음 이후 2.0 2.5 공유 CLR 버전 번호,이러한 필요가 distenguished 을 확인하여 레지스트리에 있습니다.이후 이전 버전을 출시 이 문자열을 찾기 위해 알려져 있습니다.

지 않고 어셈블리에 적재 및길을 끄는 예외(는 느린),체크 클래스에 대한 API 를 변경 사 2.0 3.5. 모노 클래스 상태 은 매우 유용합니다.예를 들어 확인할 수 있습니다 GC.Collect Method (Int32, GCCollectionMode) 에 mscorlib 과에서 추가되었 3.5.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top