2017-01-30 11 views
14

.NET çekirdeğimdeki bir sınama kaynağı olarak bir json dosyası gömmek gerekiyor. http://codeopinion.com/asp-net-core-embedded-resource/'un bu yazısının yazarı, var assembly = Assembly.GetExecutingAssembly(); kullanımını içeren örnek bir kod sağladı. Ancak, bunu denediğimde hatayı alıyorum: Cannot resolve symbol ‘GetExecutingAssembly’ and ‘Assembly’ does not contain a definition for ‘GetExecuringAssembly’Assembly.GetExecutingAssembly() kullanılabilir mi?

+0

Olası kopyalar [nasıl DNX Çekirdek 5.0 (ASP.NET 5)? In yürütme derleme başvurusu yapmak] (http://stackoverflow.com/questions/32856659/how-do-you-reference- i-execute-assembly-in-dnx-core-5-0-asp-net-5) –

cevap

18

Artık "static" Assembly sınıfı yok. Bunun yerine yüklemek istediğiniz mecliste bir sınıf/tip adıyla değiştirilmesi gerektiğini

typeof(<AClassHere>).GetTypeInfo().Assembly 

gibi bir şey yapmak zorunda.

+1

bu, bildiğim en iyi yoldur. ama bu çirkin :( –

3

Hayır, .NET Core 1.0/1.1 sürümünde kullanılamaz.

Ancak yanlış hatırlamıyorsam, o .NET Core 2.0 geri olacak ve .NET> = 4.5 yapma karşı yazılı kitaplıkları ile çok daha büyük bir API yüzeyini ve artan uyumluluğa sahip olacak bu yılın ilerleyen tahliye edilecek olan netstandard2.0, bunları .NET Standard 2.0/2.1'e taşımak daha kolay.

Ancak, API uygulamalarının birçoğu platforma bağlı olacaktır. Araçlar, her yerde SomeAPI.GetSomething()'u arayabileceksiniz, ancak .NET Core'da çalıştırıyorsanız, PlatformNotSupportedException'u atabilirsiniz.

Ancak, derleme taraması ve keşfedilmesiyle ilgili çoğu API, .NET Core/Standard 2.0 sürümüne dönmelidir. .NET Core uygulamasında AppDomains olmadığı için AppDomain civarında bulunan içerikler hala kayboluyor ve işlemler yalıtım için kullanılmalıdır. Yukarıdaki NET Standard 1.5 veya hedefliyorsanız

+0

Buna ek olarak, [alternatif için bu linke bakın.] (https://forums.asp.net/t/2001385.aspx?Assembly+GetExecutingAssembly+core) – Rohit416

14

, aşağıdakilerden herhangi birini çağırabilir:

System.Reflection.Assembly.GetExecutingAssembly(); 
System.Reflection.Assembly.GetEntryAssembly(); 
System.Reflection.Assembly.GetCallingAssembly(); 

NET Standard önceki sürümlerini hedefleyen sonra typeof(SomeClass).GetTypeInfo().Assembly yöntem tek yoludur.

+4

@jgauffin 'System .Reflection.Assembly.GetEntryAssembly() ', .NET Core'un bir parçasıdır. Bunun için corefx'de testler vardır: https://github.com/dotnet/corefx/blob/6317e53b89680d83747d789c354bb1acda011758/src/System.Reflection/tests/ AssemblyTests.cs # L120-L128 – Polynomial

+0

@jgauffin dotnetcore, .NET standardının bir parçasıdır. –

-1

Uygulamanın geçerli çalışma dizinini döndürür. Hata ayıklama ve birim testleri için kullanışlıdır.

Directory.GetCurrentDirectory(); 
ait