2016-10-07 15 views
2

我有GlobalResources問題MVC App_GlobalResources文件,使用本地和發佈

  1. 我創建的文件夾App_GlobalResources文件
  2. 添加User.resx
  3. 添加名稱= 「名字」,值= 「名字」

默認我不能在我的MVC項目中使用這些資源。 我想:

  • App_GlobalResources.User.FirstName - 沒有工作
  • Resources.User.FirstName - 它的工作原理,但只有代碼隱藏,當構建和啓動應用程序(本地),顯示錯誤:

Nie można pobrać właściwości „Name」, ponieważ lokalizacja nie powiodła się. Typ „Resources.Users」 nie jest publiczny lub nie zawiera publicznej, statycznej właściwości ciągu o nazwie „FirstName」.

其中它的翻譯是:

Unable to retrieve the properties "Name" as the location failed. Type "Resources.Users" is not a public or does not contain a public static property within named "FirstName."

然後我改變User.resx正確領帶:

  • 生成操作:嵌入式的資源
  • 複製到輸出:目錄不要複製
  • 自定義工具:PublicResourceProxyGenerator
  • 自定義工具命名空間: 「空」

現在我可以't use Resources.User.FirstName我必須useApp_GlobalResources.User.FirstName

我很高興這是工作。不過,昨天是我第一次發佈測試服務器上,資源的開發不工作...

文件簡化版,複製到服務器...

我改變User.resx性能

  • 生成操作:內容
  • 複製到輸出:目錄不要複製
  • 自定義工具:GlobalResourceProxyGenerator
  • 自定義工具命名空間: 「空」

複製文件,但應用程序拋出以前我共享的以前的異常,資源不能在localmachine中工作,有什麼建議嗎?

+0

你幫我提出這個問題,因爲我試了一下,不知道默認的「屬性」了:D並將設置恢復爲默認設置幫助我 –

回答

1

考慮以下事項有關的資源:

當你添加一個資源文件的ASP.NET項目App_GlobalResources特殊的文件夾中,GlobalResourceProxyGenerator自定義工具將被用於你的資源,它會在生成一個internal類用於管理資源的App_GlobalResources程序集中的Resources命名空間。

  • 這些資源是內部的,它們的訪問修飾符是不能改變的。
  • 它們不能用於數據註釋屬性[Display]或驗證屬性。

  • 它們可以通過調用Resources.ResourceFile.ResourceProperty直接在View或代碼中使用。

ResXFileCodeGenerator自定義工具嵌入的資源,將產生一個命名空間是默認的命名空間+文件夾層次公共資源文件。

  • 這些類型的資源默認爲公共,但您可以使用設計器更改它們的訪問修飾符。您也可以通過更改它們的Custom Tool Namespace屬性在自定義名稱空間中生成它們。

  • 它們可以用於數據註釋屬性,如[Display]或驗證屬性。

  • 它們可以直接調用SomeNamespace.ResourceFile.ResourceProperty在視圖或代碼中使用。

-1

打開資源文件,改變訪問修飾符公共和不讓它作爲嵌入式資源,因爲這將產生與該項目集的名稱另一組裝的.resources後綴追加,這將使它你很難在部署之後更改任何資源值,使其不會嵌入並複製到輸出目錄,以便以後可以選擇更改resx文件而無需部署dll。

1

感謝您的幫助

我所做的:

生成操作:

  1. 創建文件夾資源
  2. 移動從App_GlobalResources文件到新的文件夾
  3. 改變所有文件屬性的所有資源:嵌入式資源

    複製到輸出:始終複製

    自定義工具:PublicResXFileCodeGenerator

    自定義工具命名空間:資源

    這個設置讓我改變訪問修飾符的resx文件公開。

    現在項目在本地機器上工作。 發佈期間的文件resx正在應對serwer。 服務器應用程序正在工作。

+0

*可以爲新的resx創建模板文件?*是有解決方案來簡化任務。您可以創建一個新的ItemTemplate或操作現有的ItemTemplate來執行您所需的操作。 –

+0

如果您需要更多幫助*可以爲新的resx文件創建模板?*添加一個包含上述描述的新問題並在那裏提出您的問題。每個stackoverflow帖子(線程)專用於一個問題。欲瞭解更多信息,請參閱[一個帖子有多個問題或多個帖子?](http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts):) –

+0

也通常你不需要發表結論。但是你對這篇文章的回答很好,很有用,所以我提高了評價。 –

相關問題