2015-11-09 47 views
3

目前我移植使用UWP平臺的Windows phone的Silverlight應用程序到Windows Mobile。等效system.Reflection.Assembly.GetExecutingAssembly的()。全名

在我的老代碼,我用一個函數來獲取下列方式的ExecutingAssemblyName:

 public static string ExecutingAssemblyName { 
     get { 
      string name = System.Reflection.Assembly.GetExecutingAssembly().FullName; 
      return name.Substring(0, name.IndexOf(',')); 
     } 
    } 

現在我想在Windows移動相同的結果,但在下面的link描述的功能並非全部似乎有在Windows移動..的,僅僅是我能看到的是:

  1. System.Reflection.Assembly.equals
  2. System.Reflection.Assembly.load
  3. System.Reflection.Assembly.ReferenceEquals

現在是否有人如何得到相同的結果?或者我應該開始重寫很多代碼。

謝謝您已經

+0

如果需要重寫「了很多代碼」,那麼你正在做的事情非常,非常錯誤的。在UWP應用程序中,反射是相當不錯的,.NET Native會給你帶來無盡的悲傷。你必須描述爲什麼你需要這個來獲得有用的答案。 –

+1

如果你需要AssemblyName,那麼[下面的Kookiz答案](http://stackoverflow.com/a/33592586/2681948),也許你可以使用'this.GetType()。GetTypeInfo()。Assembly.FullName'。不過,我會按照Hans Passant的建議。 – Romasz

+0

我使用assemblyname將它與函數一起在我的Resourceheper類中返回。無論何時我想要得到某些東西,我會用下面的方法使用ExecutingAssemblyName來做一個例子。 公共靜態流GetStream(字符串relativeUri){ 回報GetStream(relativeUri,ExecutingAssemblyName); } 這就是爲什麼我需要它,我不知道如何獲得程序集名稱。 – Tvt

回答

6

爲了得到一個組件的全名,你可以使用代碼如下(如Romasz提到)。

this.GetType().GetTypeInfo().Assembly.FullName 

在UWP中,提交到商店的所有應用都將符合.NET Native。

的.NET運行庫本地人不包括JIT編譯器。因此,必須提前生成所有必需的本機代碼。一組 啓發式用於確定應該生成哪些代碼,但這些啓發式不能涵蓋所有可能的元編程方案。

欲瞭解更多信息,請參閱文章Reflection and .NET Native

在你的情況,我建議你使用的資源文件(Resources.resw)來管理文本資源,並把文件資源(如圖片,圖標)的資產文件夾下。

enter image description here

+0

對我來說這可能會更好。感謝您的建議可能需要更長的時間,但似乎是最好的解決方案。 – Tvt