Zainstalowałem VS2015 RTM en VS2013 Update 5 RTM. Teraz moje rozwiązanie nie buduje, ponieważ mam interfejs, który ma jako returntype a X509Certificate2
. Teraz moje podróbki nie są budowane. Stworzyłem również projekt testowy i mam ten sam problem, więc nie jest to moje rozwiązanie. Przesłanie, które pojawia się:System.Security.Cryptography.X509Certificates.X509Certificate2 nie jest dostępny w docelowej wersji szkieletowej
Nie można wygenerować niedopałek na ClassLibrary1.Interfaces.ICertificateProvider: metoda System.Security.Cryptography.X509Certificates.X509Certificate2 ClassLibrary1.Interfaces.ICertificateProvider.getbla() unstubbable: metoda jest abstrakcyjna i nie mógł be stubbed, wpisz System.Security.Cryptography.X509Certificates.X509Certificate2 nie jest dostępny w docelowej wersji frameworka.
Teraz odinstalowałem VS2015 RTM, ale problem nadal występuje. Kiedy komentuję metodę z typem zwracania, certyfikat wszystko działa. Kiedy odkomentuję to, problem jest.
Aktualizacja 1 Właśnie przetestowałem to w innym systemie. Najpierw próbowałem go z VS2013 Update 4 i VS2015 RC. Dzięki tej konfiguracji wszystko było w porządku. Następnie zainstalowałem Update 5 RTM w tym systemie, a następnie przestało działać. Więc aktualizacja 5 musi być problemem! aktualizacja Koniec
Aby odtworzyć: stworzyć rozwiązanie z 2 klasy bibliotek i 1 projektu badawczego z .Net Framework 4.5.1. Tworzenie interfejsu w klasie biblioteki 1.
namespace ClassLibrary1.Interfaces
{
public interface ICertificateProvider
{
// Comment this line so you can build your fakes assembly...
X509Certificate2 getbla();
}
}
Utwórz klasę w drugiej klasy biblioteki. Zaimplementuj interfejs i dodaj odwołanie do biblioteki pierwszej klasy.
namespace ClassLibrary1
{
public class CertificateProvider : ClassLibrary1.Interfaces.ICertificateProvider
{
public X509Certificate2 getbla()
{
throw new NotImplementedException();
}
}
}
Dodaj zespół podróbek do projektu interfejsu w projekcie unittest. Za następującym kodem w teście:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ClassLibrary1.Interfaces.Fakes;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
StubICertificateProvider provider = new StubICertificateProvider();
}
}
}
Teraz twój projekt się nie zbuduje. Jeśli skomentujesz metodę w interfejsie, Twój projekt zostanie zbudowany. Włącz diagnostykę w pliku .fakes
, aby wyświetlić komunikat o błędzie.
Ktoś rozwiązanie?
Aktualizacja 2 Zmiana rozwiązania do użycia .Net Framework 4.6 działa. Zmiana na 4.5.2 nie działa.
Update 3 Link do oficjalnej bug z Github: https://github.com/dotnet/coreclr/issues/1303
Witam, Mam ten sam błąd dzisiaj. Zastanawiasz się, czy była tam aktualizacja? –
Nie, jeszcze nie. Jeśli znajdziesz rozwiązanie tego problemu, udostępnij je! –
Na razie właśnie odinstalowałem Update 5 i VS2013. Następnie ponownie zainstalowałem VS2013 i Update 4. To działa. Tylko odinstalowanie aktualizacji 5 i ponowna instalacja aktualizacji 4 nie działa. Na razie to nasze jedyne rozwiązanie ... –