Ho installato VS2015 RTM e VS2013 Update 5 RTM. Ora la mia soluzione non sta costruendo perché ho un'interfaccia che ha come returntype un X509Certificate2
. Ora i miei falsi non sono costruiti. Ho anche creato un progetto di test e lì ho lo stesso problema, quindi non è la mia soluzione. Il messaggio che ricevo è:System.Security.Cryptography.X509Certificates.X509Certificate2 non è disponibile nella versione di framework di destinazione
Impossibile generare stub per ClassLibrary1.Interfaces.ICertificateProvider: Metodo System.Security.Cryptography.X509Certificates.X509Certificate2 ClassLibrary1.Interfaces.ICertificateProvider.getbla() unstubbable: il metodo è astratto e non poteva essere stubbed, digitare System.Security.Cryptography.X509Certificates.X509Certificate2 non è disponibile nella versione di framework di destinazione.
Ora ho disinstallato VS2015 RTM ma il problema è ancora lì. Quando commento il metodo con come tipo di ritorno il certificato funziona tutto. Quando lo annullo, il problema è lì.
Aggiornamento 1 Ho appena testato questo su un altro sistema. Per prima cosa l'ho provato con VS2013 Update 4 e VS2015 RC. Con quella configurazione tutto andava bene. Ho quindi installato l'aggiornamento 5 RTM su quel sistema e quindi non ha funzionato più. Quindi l'aggiornamento 5 deve essere il problema! aggiornamento Fine
di riprodursi: Creare una soluzione con 2 librerie di classi e 1 progetto di test con il Net Framework 4.5.1. Creare un'interfaccia nella libreria di classi 1.
namespace ClassLibrary1.Interfaces
{
public interface ICertificateProvider
{
// Comment this line so you can build your fakes assembly...
X509Certificate2 getbla();
}
}
Creare una classe nella seconda libreria di classi. Implementare l'interfaccia e aggiungere un riferimento alla libreria di prima classe.
namespace ClassLibrary1
{
public class CertificateProvider : ClassLibrary1.Interfaces.ICertificateProvider
{
public X509Certificate2 getbla()
{
throw new NotImplementedException();
}
}
}
Aggiungere un gruppo di falsi per il progetto di interfaccia nel progetto unittest. Passato il seguente codice in una prova:
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();
}
}
}
Ora il progetto non verrà generato. Se commentate il metodo nell'interfaccia che il vostro progetto costruirà. Abilitare la diagnostica nel file .fakes
per il messaggio di errore.
Chiunque una soluzione?
Aggiornamento 2 Modifica della soluzione da utilizzare .Net Framework 4.6 funziona. Il passaggio alla 4.5.2 non funziona.
Update 3 Link bug ufficiale di Github: https://github.com/dotnet/coreclr/issues/1303
Ciao, Ho ricevuto lo stesso errore oggi. Ti chiedi se ci sia stato un aggiornamento su di esso? –
No non ancora. Se trovi una soluzione per questo, per favore condividi! –
Per ora ho appena disinstallato Update 5 e VS2013. Successivamente ho installato nuovamente VS2013 e Update 4. Funziona. Solo la disinstallazione dell'aggiornamento 5 e la reinstallazione dell'aggiornamento 4 non hanno funzionato. Per ora questa è la nostra unica soluzione ... –