2013-01-24 29 views
6

Używam programu Visual Studio 2012 i .Net Framework 4.5 Mam 2 rozwiązania: 1) Aplikacja WPF 2) Biblioteka klas (dll)Zespół trybu mieszanego jest zbudowany w stosunku do wersji "2.0.50727" środowiska wykonawczego i nie można go załadować w środowisku wykonawczym 4.0.

Biblioteka klas zawiera 3 przyciski i kontrolkę, która musi znajdować się wewnątrz formantu WindosFormsHost, ponieważ została utworzona dla WinForm.

Jedynymi zestawami referencyjnymi poza tymi systemami .NET Framework są wymienione kontrolki WinForm i iTextSharp.

Kontrola winforms wydaje się być trochę stary i kiedy mogę umieścić odniesienie w moim dll Mam ten sam błąd jak tytuł, ale po drugim tak, pytania/odpowiedzi, mój kładę to w moim pliku config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

błąd:

tryb mieszany zespół jest zbudowany na wersji „v2.0.50727” w czasie rzeczywistym i nie może być załadowany w środowisku wykonawczym 4.0 bez informacji dodatkowej konfiguracji

Jak już wspomniałem, widziałem pytania dotyczące tego problemu i rozwiązali problem w moim projekcie DLL, ale w projekcie korzystającym z tej biblioteki próbowałem ich wszystkich bezskutecznie. Dla porównania:

  1. What 'additional configuration' is necessary to reference a .NET 2.0 mixed mode assembly in a .NET 4.0 project?
  2. Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime
  3. What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?
  4. Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime
  5. Mixed mode assembly is built against version X and cannot be loaded in version Y of the runtime without additional configuration information

w tym projekcie mój plik konfiguracyjny ma te same znaczniki z tymi samymi wartościami.

Należy również zauważyć, że w mojej aplikacji WPF na początku otrzymywałem komunikat o błędzie, że nie można znaleźć określonego dll (dla formantu WinForm), w końcu umieściłem dll tej kontroli w GAC.

Próbowałem zmienić ramkę docelową dla wszystkich możliwości (4.5, 4.0 pełna i klient, 3.5 pełne i klienta, 3.0 i 2.0), budując moją bibliotekę DLL w debugowaniu i wydaniu i ustawiając "Generuj zespół do serializacji" do OFF również zmienił cel platformy z Dowolnego CPU na x86 i x64. Próbowałem tylko zmieniać wartość jednego ustawienia naraz.

Czy to jest problem w VS2012, czy co muszę zrobić, aby rozwiązać ten problem?

EDIT:

Powyższy błąd jest wyświetlany w czasie projektowania na liście błędów, projektant pokazuje błąd mówiąc „Nie można utworzyć instancję«my_class»”

Wewnętrzna wyjątkiem, że jeden mówi: "Set connectionId zwrócił wyjątek", a wewnętrznym wyjątkiem jest komunikat tytułowy.

to jeszcze pozwala, aby roztwór został zbudowany, a po uruchomieniu aplikacji, mam w zasadzie takie same, poza tym, że najgłębsza wyjątek mówi:

„Nie można załadować pliku lub zestawu„SigPlusNET, Version = 1.1 .3358.14336, Culture = neutral, PublicKeyToken = 6aef07010bb0624f 'lub jedna z jego zależności. Podjęto próbę załadowania programu o nieprawidłowym formacie. "

Że jeden jest montaż kontrolki WinForms, w trakcie kontroli przez dotPeek jedynymi zależnościami to ma to te .NET Framework

+0

prawym przyciskiem myszy projekt EXE, właściwości , Odblokuj kartę, odznacz "Włącz proces hostingu Visual Studio" i spróbuj ponownie. –

+0

Nie wspomniałem o tym w moim pytaniu, ale dostaję to w czasie projektowania, kiedy przeciągam i upuszczam kontrolkę z przybornika (program ulega awarii po uruchomieniu), będę edytować moje pytanie i dodać wyjątek, który otrzymuję w czasie wykonywania –

+2

Drugi błąd, który właśnie napisałeś w edycji, jest taki, że SigPlusNET (lub coś, co używa) jest niewłaściwą platformą docelową. Albo twoja aplikacja jest 32-bitowa, a SigPlusNET (lub zależność) jest 64-bitowa lub odwrotnie. –

Odpowiedz

4

Praca z Bling dla DirectX 10.0, (Bling UI Toolkit w CodePlex). Dostałem błąd, który spowodował, że znalazłem się tutaj na tej stronie, szukając rozwiązania, plik app.config w D3D10.example zawierał obsługiwane środowisko wykonawcze, wersja = 4. Ale to nie to późniejszą linię do linii version = 2 .net, przy użyciu app.config jako:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" /> 
    <supportedRuntime version="v2.0.50727" /> 
</startup> 
</configuration> 

rozwiązać problem, a wszystkie przykłady prowadzonych w VS2012 raz plik konfiguracyjny został zmodyfikowany do kodu pokazane.

Nie wiem, czy ten post jest za późno na odpowiedź, właśnie zaczynam w Windows 7 i VS2012 w tym miesiącu na projekcie graficznym i zmiana konfiguracji rozwiązała mój problem.

2

Może to być spowodowane tym, że masz 4.0 w 1 miejscu i 4.5 W kolejnym na tej linii :

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 

Spróbuj:

<supportedRuntime version="v4.5" sku=".NETFramework,Version=v4.5" /> 

lub

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
+0

Błąd mówi 4.0 runtime, czy vs2012 używa innej wersji? zarówno mój wpf, jak i dll używają .net 4.5, więc to jest powód tych wartości, w każdym razie po prostu próbowałem tego, co powiedziałeś, a problem nadal występuje. –

+0

Nie używałem 4.5, więc nie jestem pewien. Miałem nadzieję, że to zadziała dla ciebie. Sądzę, że możliwe jest, że masz zarówno projekt 4.0, jak i 4.5 i potrzebujesz dwóch tagów "supportedRuntime", 1 dla wersji 4.0, a drugiej dla wersji 4.5. Czy możesz tego spróbować? –

+0

Próbowałem tego, nie działa, rozglądając się, czy vs2012 używa innego runtime znalazłem to: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx Zobacz xml pod trzecim obrazem w "Bezpiecznie rozwijać" zarówno dla sekcji .NET 4, jak i .NET 4.5 "jest tak samo jak moja kopalnia –

2

Moje podejście było trochę inne. Błąd jednoznacznie identyfikuje niektóre .NET 2.0.50727 komponent został uwzględniony w .NET 4.0 W app.config pliku zamiast używania tego:

<startup useLegacyV2RuntimeActivationPolicy="true"> 

się rozwiązać mój problem

+0

po tym wszystkim, że tutaj mam głowę. To była aktualizacja z 3,5 do 4,5.2 i DTSX ulegał awarii podczas wykonywania. – DirtyHowi