C# 如何使用Win Store应用程序和WP8应用程序中的相同代码加载字符串资源?

C# 如何使用Win Store应用程序和WP8应用程序中的相同代码加载字符串资源?,c#,windows-phone-8,localization,windows-store-apps,windows-store,C#,Windows Phone 8,Localization,Windows Store Apps,Windows Store,我有一个Windows Phone 8应用程序,我现在正在将其移植到Windows应用商店。大部分WP8代码可以在Windows应用商店应用程序中使用,无需任何更改。但是,使用资源字符串时存在问题 在WP8项目中,字符串存储在.resx文件中,可以通过通用类AppResources在代码中使用: String msg = AppResources.MyMessageStringID; 在WinStore项目中,字符串存储在.resw文件中,可以通过ResourceLoader在代码中使用: p

我有一个Windows Phone 8应用程序,我现在正在将其移植到Windows应用商店。大部分WP8代码可以在Windows应用商店应用程序中使用,无需任何更改。但是,使用资源字符串时存在问题

在WP8项目中,字符串存储在.resx文件中,可以通过通用类AppResources在代码中使用:

String msg = AppResources.MyMessageStringID;
在WinStore项目中,字符串存储在.resw文件中,可以通过ResourceLoader在代码中使用:

public class StringLoader {
    private static ResourceLoader resourceLoader = new ResourceLoader();

    public static String Get(String stringName) {
        return resourceLoader.GetString(stringName);
    }
}

String msg = StringLoader.Get("MyMessageStringID");
我正在寻找一种方法,使用相同的代码在两个项目中加载字符串。我的第一种方法是使用编译器开关:

String msg = #if NETFX_CORE StringLoader.Get("MyMessageStringID"); #else AppResources.MyMessageStringID; #endif
问题:编译器开关不能内联使用。必须是这样的:

#if NETFX_CORE
    String msg = StringLoader.Get("MyMessageStringID"); 
#else 
    String msg = AppResources.MyMessageStringID; 
#endif
虽然对于这个简单的示例来说这是可能的,但它会在实际项目中创建大量冗余代码

当然,我也可以为Win Store创建AppResources类:

public class AppResources{
    private static ResourceLoader resourceLoader = new ResourceLoader();

    public static String MyMessageStringID {
        get { return resourceLoader.GetString("MyMessageStringID "); }
    }
}
这样的类是在WP8中自动创建的,据我所知,我必须为Windows应用商店应用程序手动创建它。由于项目中有几百个字符串,这将非常非常有用


在WP8和Windows应用商店中使用相同的代码进行本地化,有什么好的、简单的、干净的解决方案吗

正是这个问题解决了。 简而言之,创建可移植类库,将资源放在那里,并在两个应用程序中引用此项目,完成