2015-12-16 94 views
16

我試圖在VS2015中創建新的資源文件。我創建了它們,但是當我嘗試更改「訪問修飾符」時,下拉框被禁用...Visual Studio 2015,無法更改新資源文件的訪問修飾符

任何想法?

我正在ASP.NET MVC 6(ASP.NET5)中工作。該項目是一個類庫,但我已經在Web Project中進行過測試,結果相同。

謝謝!

enter image description here

編輯:添加的屬性窗口 enter image description here

+0

打開的設計文件(Resource.Designer.resx)在記事本++資源文件名和改變內部/ private修飾符(所有屬性,構造函數和類)。 – Ricardo

+0

@chemitaxis,按照[我的答案]中的說明(http://stackoverflow.com/questions/34314146/visual-studio-2015-cant-change-access-modifier-of-new-resources-files/39441597#39441597 ) – RAM

回答

11

您可以檢查文件的屬性和驗證,如果自定義工具是ResXFileCodeGenerator?如果是GlobalResourceProxyGenerator,則下拉菜單將被禁用。

+1

嗨!我沒有這些屬性... – chemitaxis

+1

直接進入解決方案資源管理器,然後右鍵單擊您的文件以獲取屬性。如果你只是打開窗口屬性它不會顯示任何內容:(CustomTool是在「高級」類別,只是在複製到輸出目錄 – arya404

+1

嗨@ arya404我已經更新了我的問題......就像你看到的,我不'沒有選擇可以改變任何東西......我已經用一個乾淨的新項目進行了測試,結果相同... – chemitaxis

4

我有同樣的問題,但我發現這個簡單的解決方案Visual Studio's Access Modifier drop down option is disabled for resource file

總結:

  1. 右鍵單擊您的文件資源,選擇屬性(Alt + Enter鍵)
  2. 改變構建對嵌入式資源的行動
  3. 將自定義工具更改爲PublicResXFileCodeGenerator
+1

你如何改變這種情況?這是我的屬性頁面對於我的.resx文件的外觀:http://imgur.com/0DYC6d9 – peco

+0

我剛從解決方案資源管理器面板中右鍵單擊我的資源文件。我有很多不同的看法,那麼你到了這裏。 – Aranha

+0

您的項目是一個asp核心項目嗎? – peco

2

A)在Asp.net核心項目

這個問題在Asp.net Core項目known bug和訪問修飾符是public默認和你不能改變它。它將通過asp解決。網核心團隊接下來的更新如果你需要internal訪問修飾符,你可以使用我的臨時解決方案:

  1. 由資源設計者在Resource.resx添加您的所有項目保存
  2. 在Solution Explorer中展開Resource.resx樹和開放Resource.Designer.cs
  3. 更換所有public個字符串它internal保存

注:每次保存Resource.resx文件,你應該再做一次第3步

最後,你應該有一個Resource.Designer.cs文件,訪問修飾符是這樣的: enter image description here

同時檢查namespaceResource.Designer.cs文件。它應該是一個合適的namespace。與您的項目同步namespace


B)在普通Asp.net項目

如果你在Properties panelCustomTool財產您的資源(.resx)文件將其更改爲 PublicResXFileCodeGenerator並解決問題

Then您應該手動更改項目中的一些設置(.csproj)文件。就是這麼簡單,只要按照我的指示:

  1. solution explorer右鍵點擊你的項目並選擇卸載項目
  2. 對上再次單擊並選擇編輯.....的csproj
  3. 在打開的.csproj文件中,找到.resx字符串,您會在那裏看到一個設置塊。這就像下面的代碼。
  4. 變化它類似下面的代碼(包括 PublicResXFileCodeGenerator):

<EmbeddedResource Include="MyResourceFile.resx"> 
     <SubType>Designer</SubType> 

     <Generator>PublicResXFileCodeGenerator</Generator> <!--important line--> 

     <LastGenOutput>MyResourceFile.Designer.cs</LastGenOutput> 
</EmbeddedResource> 
  • 保存編輯的.csproj文件
  • 再次右鍵單擊您的項目在solution explorer並選擇刷新項目
  • 現在開放.resx文件並享受;)
  • 注:,而不是使用MyResourceFile

    +0

    但是如果沒有'.csproj'文件 - 只是'.xproj'文件(注意問題的標籤)呢? – Tubbe

    +0

    @Tubbe,好點。我編輯了我的答案,並在'asp.net core'項目中爲這個錯誤添加了一個新的臨時解決方案。我希望它能起作用。 – RAM

    +0

    @RAM的核心部分不會傷心 – Simon

    相關問題