Bu 'un numaralı kopyasının this question kopyası olabileceğini unutmayın, emin değilim.Kod sözleşmesi, 'Üye başvurusu çözülemedi' ile yeniden başarısız oldu
Sorunum, bir üçüncü taraf kitaplığı (COM) başvurusu olan bir sınıf kitaplığı projem var.
public class foo
{
public static int divide(TypeFromTypeLib tftl, int a, int b)
{
Contract.Requires<ArgumentException>(b != 0);
return a/b;
}
}
Ve sonra bir istemci projesi var bu yöntemin, örneğin faydalanmak: Öyle gibi, sınıf kitaplığında yöntemlerle içine sözleşmeleri koymak istiyorum
var n = foo.divide(null, 4, 2);
Ama aynı zamanda istemci projesi gibi aynı zamanda yöntemlerin bazılarında sözleşmeler kullanmayı tercih ediyorum. Bu nedenle, her iki projede de Kod Sözleşmeleri özelliklerini 'Çalışma Zamanı Sözleşme Denetimi Gerçekleştir' olarak ayarlıyorum (çalışma zamanını bu ayarlara gereksinim duyduğunuzu bildiren bir sürüm almanıza gerek kalmadan).
Şimdi, o zaman müşteri derlemeye çalıştığınızda, aşağıdaki hatayı alıyorum :
Could not resolve member reference: my_class_lib.foo::divide.
ccrewrite : error : Rewrite aborted due to metadata errors.
kaçınılmaz görünüyor - Üçüncü şahıs tipi kütüphanesinden bir türü olan bir yöntemi denir her zaman bu olmuyor . Türü, yöntem imzasından kaldırın ve sorun değil.
Bunun nedenini açıklayan herkes var mı? Bu, kodumun yapısının temel olarak kusurlu olduğuna dair bir ipucu mu (eğer öyleyse, neden?), Yoksa kod sözleşmelerinin bir tuhaflığı mıdır? Bu sorun için önerilen bir düzeltme var mı?
Bu hatayı, ccrewrite'den, imzalarında birlikte çalışma türleri gömülü olan bir birinci taraf kitaplığındaki yöntemlerden alıyorum. – JamesFaix
Projemi VS2015'te açtım ve VS2013'e geçtim ve sorun ortadan kalktı. Roslyn derleyicisi, gömülü birlikte çalışma türlerini eski derleyiciden farklı bir şekilde ele alıyor gibi görünüyor, ancak bu konuda herhangi bir belge veya konuşma bulamıyorum. Muhtemelen ilgili: http://stackoverflow.com/questions/35641972/why-does-visual-studio-2015-throw-more-cs1769-compiler-errors-than-vs2013 – JamesFaix
Kod sözleşmelerinin hangi sürümlerini yüklediniz? 26 Ocak 2016'da v.1.10.10126.2-rc1 sürümüne kadar, Visual Studio 2015'te çalışan kod sözleşmelerinin çalışma zamanı denetimini hiç yapmadım. Bu sürüm, kod sözleşmelerinin ilk büyük topluluk güdümlü sürümleridir ve çok adreslidir. bekleyen sorunlar. Şuradan indirilebilir: https://github.com/Microsoft/CodeContracts/releases. Kurdum ve çalışma zamanı kontrolü şimdi tekrar benim için çalışıyor. –