런타임 충돌을 피하기 위해 VS2008 Target .NET 2.0 (서비스 팩은 아님)의 개발자가 어떻게 있습니까?

StackOverflow https://stackoverflow.com/questions/1357472

문제

그래서 개발 팀을 VS2008로 업그레이드하고 싶습니다. 기업으로서 우리는 아직 3.5 런타임을 출시하지 않았습니다.

일부 독서에서 VS2008을 설치하면 새 API가있는 .NET 2.0 SP1을 자동으로 제공하며 2.0 런타임을 타겟팅하면 2.0 SP1을 가정합니다.

그러나 SP1이 사용자에게 롤아웃되지 않으면 런타임이 나옵니다.

  1. 어쨌든 대 Target Dotnet 2.0 (SP1이 아님)을 갖고 있습니까?
  2. 이 문제에 대한 다른 솔루션이 있으므로 개발자는 로컬로 컴파일하고 잘 작동하는 API를 사용하지 않지만 생산에서 폭발하는 API를 사용하지 않습니까?

나는 FXCOP에 이것에 대한 점검을 가지고 있지만이 문제에 대한보다 바보에 대한 해결책이 있어야합니다.

도움이 되었습니까?

해결책

이것은 어렵거나 쉬울 수 있습니다. 우리는 두 경로를 모두 갔다 :

  1. 쉬운 방법 : .NET 2.0 만 설치된 빌드 서버를 설정하십시오. 체크인시 빌드를 자동화하십시오 (CruiseControl.net을 사용합니다). 프로젝트를 구축하려면 Command-Prompt에서 MSBuild를 사용해야합니다.

  2. 3.5 설치된 기계의 경우 .NET 2.0 프레임 워크 디렉토리에서 MSBuild를 실행할 때에도 많은 MSBuild 도구가 교체됩니다. 이를 피하려면 .NET 2.0 런타임의 지속적인 사용을 강요하는 응용 프로그램을 작성해야합니다. 이것은 쉽지 않습니다. 우리는 프로젝트를 직접로드하고 Microsoft.build.* 프레임 워크를 사용하여 빌드를 호출합니다. 이것만으로도 충분하지 않습니다. .config 파일에서 사용하려는 어셈블리를 고정해야합니다.

    u003Cconfiguration>u003Cruntime>u003CassemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">u003CdependentAssembly>u003CassemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>u003CbindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="2.0.0.0"/>u003C/dependentAssembly>u003CdependentAssembly>u003CassemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>u003CbindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="2.0.0.0"/>u003C/dependentAssembly> ... ect ...u003C/assemblyBinding>u003C/runtime>u003C/configuration>

BTW, 귀하는 VS2008에서 새로 만든 프로젝트에 문제가있을 수 있으며, 정의 해야하는 "MSBuildToolspath"라는 속성을 기대합니다. MSBuild를 사용하는 경우 명령 줄 에서이 내용을 정의하거나 두 번째 옵션을 사용하는 경우 프로그래밍 방식으로 지정할 수 있습니다.

engine.GlobalProperties.SetProperty( "MSBuildToolsPath", msbuildPath );

다른 팁

아마도 supportEdRuntime 구성 요소 살펴볼 가치가 있습니다. 그러나 이것이 도움이 될 수 있는지 확실하지 않습니다.

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