我目前正在开发Windows 10 UWP。起初,我只有一个项目,我添加了一个Constants.resw文件来使用我保存在本地存储中的资源,稍后再访问它们。现在我创建了一个类型为 Timer 的后台任务,我想在Timer Background Task项目中访问我的数据库,所以我创建了一个类库项目,并在该项目中添加了所有POJOS和Utils类。有人可以建议我是否可以在类库项目中添加Constants.resw以及如何?
另外,我想使用下面的代码访问它,我在单个项目时使用了这个代码(Windows 10 UWP Project)
ApplicationDataContainer userSettings = ApplicationData.Current.LocalSettings;
if (!userSettings.Containers.ContainsKey(Constants.DB_AVAILABLE)) //if (!checkIfDBExists().Result)
{
//some operations
}
当我尝试在后台任务中使用Constants.resw时,我收到以下错误
Exception thrown: 'System.TypeInitializationException' in Common.dll
System.TypeInitializationException: The type initializer for 'Common.CommonResources.Constants' threw an exception. ---> System.Exception: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at Windows.UI.Xaml.Application.get_Current()
at Common.CommonResources.Constants..cctor()
--- End of inner exception stack trace ---
at Common.CommonResources.Constants.get_DB_AVAILABLE()
at Common.DatabaseManager.getSQLiteConnection()
at Common.DatabaseManager.getLocationDetails()The type initializer for 'Common.CommonResources.Constants' threw an exception.
答案 0 :(得分:2)
您无需将Resources.resw文件添加到类库或Windows运行时组件,因为资源在应用程序级别而非项目级别工作。 这意味着您的主应用程序项目中的资源可以“看到”并在您的应用程序中的所有项目中使用。这是一个如何从外部加载资源的示例:
ResourceContext resourceContext = ResourceContext.GetForViewIndependentUse();
ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
// Here you load the resource you need
var resourceValue = resourceMap.GetValue("resourceName", resourceContext);