[InternalsVisibleTo()] özelliğini kullanarak bir 'arkadaş montajı' oluşturmaya çalışıyorum, ancak çalışmayı başaramıyorum. Microsoft'un creating signed friend assemblies yönergelerini takip ettim ve yanlış gittiğimi göremiyorum. Bu yüzden adımı burada detaylandıracağım ve umarım birileri benim kasıtlı hatayı fark edebilir ...?Arkadaş Meclileri C#
böylece ortak anahtarı Güçlü bir isim anahtarı oluşturun ve ayıklamak:
sn -k StrongNameKey
sn -p public.pk
sn -tp public.pk
Ekle Her projeye güçlü isim anahtarı ve imzalamayı etkinleştirin.
bir iç özelliği ile Internals adlı bir proje ve bir sınıf oluşturun:
namespace Internals
{
internal class ClassWithInternals
{
internal string Message { get; set; }
public ClassWithInternals(string m)
{
Message = m;
}
}
}
TestInternalsVisibleTo adlı başka bir proje oluşturun: Içselleri projesi için
namespace TestInternalsVisibleTo
{
using Internals;
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
var c = new Internals.ClassWithInternals("Test");
Console.WriteLine(c.Message);
}
}
}
Düzenleme AssemblyInfo.cs dosyası, gerekli özniteliği ekleyin:
[assembly: AssemblyTitle("AssemblyWithInternals")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Internals")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("41c590dc-f555-48bc-8a94-10c0e7adfd9b")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: InternalsVisibleTo("TestInternalsVisibleTo PublicKey=002400000480000094000000060200000024000052534131000400000100010087953126637ab27cb375fa917c35b23502c2994bb860cc2582d39912b73740d6b56912c169e4a702bedb471a859a33acbc8b79e1f103667e5075ad17dffda58988ceaf764613bd56fc8f909f43a1b177172bc4143c96cf987274873626abb650550977dcad1bb9bfa255056bb8d0a2ec5d35d6f8cb0a6065ec0639550c2334b9")]
Ve sonunda ... inşa! nedeniyle koruma düzeyi
hata CS1729 için erişilemez 'Internals.ClassWithInternals':
hata CS0122:
Ben aşağıdaki hataları olsun 'Internals.ClassWithInternals' 1 argüman alan bir yapıcı içermiyor error CS1061: 'International'ı.ClassWithInternals' bir 'Message' tanımı içermiyor ve 'Interals.ClassWithInternals' türünde bir ilk argümanı kabul eden 'Message' bulunamıyordu. ?)
Temel olarak, InternalsVisibleTo attrbute kullanılmamış gibi. Şimdi, araçları suçlama tuzağına düşmeyeceğim, yani burada ne var? Kimse?
Emin misiniz TestInternalsVisibleTo imzalanıyor? Reflector'da görüntülediğinizde, genel anahtar belirteci olduğunu görüyor musunuz? –