2016-03-22 15 views
7

Mamy garść kodu C#, który odwołuje się do Prism.Core. Prism.Core to przenośna biblioteka klas. Kiedy odwołać to w C++/CLI i spróbuj użyć polecenia delegata, otrzymujemy:W jaki sposób projekt C++/CLI może odwoływać się do przenośnej biblioteki klas?

C4691: „System :: Object”: typ odwołuje oczekiwano w montażu bez odniesień „System.Runtime”, typ zdefiniowany w bieżąca jednostka tłumaczeniowa używana zamiast:

Czy ktoś może wyjaśnić dlaczego? Czy istnieje jakiś sposób naprawy, inny niż odbudowanie źródła, którego nie chciałem robić, ponieważ Prism jest Nugetowany w naszym źródle C#?

Odpowiedz

0

Miałem podobną konfigurację z tym samym ostrzeżeniem. Projekt C# odwoływał się do pakietu NuGet z wieloma strukturami docelowymi. Ponieważ zarządzanych pakietów NuGet nie można dodawać do projektów C++/CLI, konieczne było ręczne dodanie odwołania do tego projektu. Ręcznie dodane odniesienie zakończyło się na DLL dla innej struktury docelowej w pakiecie NuGet. Coś jak:

CSharpProject.csproj -> packages\Prism.Core.6.2.0\lib\portable-win+net45+wp80+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Prism.dll 
CppCliProject.vcxproj -> packages\Prism.Core.6.2.0\lib\net45\Prism.dll

Zmiana odniesienia w projekcie C++/CLI, aby korzystać z tego samego DLL jako projekt C# ustalone to w moim przypadku.