我有一个带有我们自己的DbResourceProvider的asp.net网站。该计划是使用常规的资源标记本地化页面:Text="<%$ Resources: Someword %>"
。
如果数据库中缺少资源,则提供程序返回resourceKey,因此在运行时缺少资源。但是在compile-time missing resources causes build-errors。
有没有人有解决方法?
(如果需要,我会添加有关我的尝试的更多详细信息。)
答案 0 :(得分:0)
一位同事在问题的the blog-post linked中的最后一条评论中指出了一个解决方案。我无权尝试,但这个类应该解决问题:
public class MyResources : System.Web.Compilation.IResourceProvider
{
private static string _entryMethod;
System.Resources.IResourceReader System.Web.Compilation.IResourceProvider.ResourceReader { get { throw new NotImplementedException(); } }
object System.Web.Compilation.IResourceProvider.GetObject(string resourceKey, System.Globalization.CultureInfo culture)
{
if (ASPNetCompilerExecutionContext)
return "ASPNetCompilerDesignTimeExecutionContext";
return "TODO: return actual resource";
}
static bool ASPNetCompilerExecutionContext
{
get
{
if (_entryMethod == null)
_entryMethod = (new StackTrace()).GetFrame((new StackTrace()).FrameCount - 1).GetMethod().Name;
if (_entryMethod == "PrecompileApp")
return true;
else
return false;
}
}
}
我想更简单的方法是假装所有资源都存在并返回"missing"
以查找缺失的资源。