我试图在VS2015中创建新的资源文件。我创建它们很好,但是当我尝试更改"访问修饰符"时,下拉列表被禁用...
有什么想法吗?
我在ASP.NET MVC 6(ASP.NET5)中工作。该项目是一个类库,但我在Web项目中测试了相同的结果。
谢谢!
答案 0 :(得分:13)
您是否可以检查文件的属性并验证自定义工具是否为ResXFileCodeGenerator?如果是GlobalResourceProxyGenerator,则下拉列表将被禁用。
答案 1 :(得分:5)
我遇到了同样的问题,但我找到了这个简单的解决方案Visual Studio's Access Modifier drop down option is disabled for resource file
总结:
- 右键单击文件资源,选择“属性”(Alt + Enter)
- 将构建操作更改为嵌入式资源
- 将自定义工具更改为PublicResXFileCodeGenerator
醇>
答案 2 :(得分:2)
我遇到过类似的问题。
这似乎是一个已知问题:https://github.com/aspnet/Tooling/issues/339
答案 3 :(得分:2)
A)在 Asp.net核心项目中
此问题是Asp.net Core
项目中的known bug,默认情况下访问修饰符位于public
,您无法更改。如果您需要internal
访问修饰符,您可以使用我的临时解决方案,它将通过asp.net核心团队的下一次更新解决但:
Resource.resx
和保存 Resource.resx
树,打开Resource.Designer.cs
public
中的所有internal
字符串替换为<{1}}并保存 注意:每次保存
Resource.resx
文件时,都应该再次执行第3步。
最后你应该有一个带有访问修饰符的Resource.Designer.cs
文件,如下所示:
同时检查namespace
文件中的Resource.Designer.cs
。它应该是合适的namespace
。与您的项目namespace
同步。
B) Normal Asp.net 项目
如果您的资源(
CustomTool
)文件的Properties panel
中没有.resx
属性,则将其更改为PublicResXFileCodeGenerator
并解决问题然后您应手动更改项目(
.csproj
)文件中的某些设置。这很容易,只需按照我的指示:
solution explorer
中的项目,然后选择卸载项目 .csproj
文件中,查找 .resx
字符串,您将看到一个设置块。这就像波纹管代码。PublicResXFileCodeGenerator
强>):
<EmbeddedResource Include="MyResourceFile.resx">
<SubType>Designer</SubType>
<Generator>PublicResXFileCodeGenerator</Generator> <!--important line-->
<LastGenOutput>MyResourceFile.Designer.cs</LastGenOutput>
</EmbeddedResource>
.csproj
文件solution explorer
上再次右键点击您的项目,然后选择重新加载项目 .resx
文件并享受;)注意:使用您的资源文件名而不是
MyResourceFile