2012-03-19 4 views
2

私たち自身のDbResourceProviderを持つasp.net Webサイトを持っています。計画は、リソースの通常のマークアップを使ってページをローカライズすることでした:Text="<%$ Resources: Someword %>"カスタムResourceProviderを使用してasp.net Webサイトでコンパイル時エラーを回避する

リソースがデータベースに存在しない場合、プロバイダーはresourceKeyを返します。したがって、実行時に欠落しているリソースは問題ありません。ただし、compile-time missing resources causes build-errorsに。

誰にもこの問題の回避策がありますか?

(必要であれば、私は私の試みの詳細を追加します。)

答えて

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"を返します。

関連する問題