2010-03-11 2 views
15

Więc czasami (często!) Chcesz kierować wersję specyficzny .NET (powiedzmy 3.0), ale ze względu na pewne usługi .NET pakuje dostać się do problemów, takich jak:Unikanie NET wersjonowania piekło

  • Dispatcher.BeginInvoke(Delegate, Object[]) < - ten dodano 3,0 SP2 (3.0.30618)
  • System.Threading.WaitHandle.WaitOne(Int32) < - ten dodano 3.5 SP1, SP2 3.0 2.0 SP2

Obecnie są one wykrywane przez kompilator JIT tak budowanie przeciwko .NET 3.0 w Visual Studio nie będzie guarante będzie działać na systemach tylko .NET 3.0.

Short

  • potwierdzający za każdym funkcję użycia lub
  • ograniczając swoje środowisko programistyczne do .NET 3.0 (który jest do bani, ponieważ masz do opracowania projektów dla innych zbyt)

jaki jest najlepszy sposób na uniknięcie używania rozszerzeń?

Dzięki!

Odpowiedz

4

Ta funkcja jest wbudowana w Visual Studio jak z VS 2008 SP1, a także jest dostępny w FxCop 1.36. Spójrz na numer David Kean's blog post, aby uzyskać więcej informacji.

alt text http://davesbox.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blog/ErrorList_5F00_3.png

+0

YEEEESS !!!! Ale nie ma wsparcia dla VS 2008 Pro ...ssssiiiiigggh – moogs

+0

ale jest fxcop !!! dzięki! – moogs

+0

Cieszę się, że mogę pomóc. Zaktualizowałem odpowiedź tak, aby zawierała również odniesienie do FxCop. –

1

Przed wysłaniem zwolnienie, kompilowania aplikacji z odpowiedniej wersji programu Visual Studio, która odpowiada najmniej wspólnego mianownika swojej docelowej userbase.

Wystarczy trzymać maszynę wirtualną, która ma gotowy, powiedzmy Visual Studio 2005 nie ma SP pod ręką, i skompilować rozwiązanie stamtąd przed wdrożeniem.

5

Microsoft wydają się zakładać, że jeśli masz zainstalowane .NET XXX, to musisz być na najnowszym dodatku Service Pack, ponieważ system Windows Update wcisnąć je do Ciebie jako krytyczne aktualizacje. Wiem, że to kruche założenie i czasami się psuje, ale tak właśnie powinno się stać.

Nasze produkty obecnie kierować .NET 3.5 SP1 i jako takie bylibyśmy zdumieni znaleźć środowiska docelowego nadal działa .NET 3.5 RTM.

+0

to rodzaj używany w połączeniu ze sterownikiem sprzętowym. musi działać nawet z komputerem PC, który nie ma dostępu do Internetu. – moogs

+3

Jeśli Twoja technologia instalatora na to pozwala, możesz spróbować dołączyć do instalacji program .NET 3.0 SP2 jako warunek wstępny. Na przykład InstallShield pozwala albo pobrać go z sieci, albo osadzić osobno. –

0

Czy to pomoże: Versioning Controlled Build?

+0

Powiedz, jak myślisz, że może to pomóc. To nie wygląda na powiązane. –

+0

Kontrolując wersjonowanie. –

2

Było sposób mówienia okna, która wersja używanie .Net. Jest coś takiego jak stworzenie pliku o nazwie dllhost.exe.config w windows \ system32 z xmllike:

<? xml version = "1.0" ?> 
<configuration> 
<startup> 
<SupportedRuntime version = XXXXXX> 
</startup> 
</configuration> 

Patrz: http://msdn.microsoft.com/en-us/library/w4atty68.aspx