Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC应用程序\全球资源,使用本地和发布_C#_Asp.net Mvc_App Globalresources - Fatal编程技术网

C# MVC应用程序\全球资源,使用本地和发布

C# MVC应用程序\全球资源,使用本地和发布,c#,asp.net-mvc,app-globalresources,C#,Asp.net Mvc,App Globalresources,我对全球资源有问题 我创建App_GlobalResources文件夹 添加User.resx Add Name=FirstName,Value=FirstName 默认情况下,我无法在MVC项目中使用此资源。 我试过: App_GlobalResources.User.FirstName-不工作 Resources.User.FirstName-它可以工作,但仅在本地构建和启动应用程序时显示代码隐藏错误: Nie można pobraćwłaściwości“姓名”,ponieważloka

我对全球资源有问题

我创建App_GlobalResources文件夹 添加User.resx Add Name=FirstName,Value=FirstName 默认情况下,我无法在MVC项目中使用此资源。 我试过:

App_GlobalResources.User.FirstName-不工作 Resources.User.FirstName-它可以工作,但仅在本地构建和启动应用程序时显示代码隐藏错误: Nie można pobraćwłaściwości“姓名”,ponieważlokalizacja Nie powiodła się。典型的“资源.用户”nie jest publiczny lub nie zawiera publicznej,statycznej właściwościągu o nazwie“名字”

其翻译为:

由于位置失败,无法检索属性名称。类型资源。用户不是公共的,或者在命名的FirstName中不包含公共静态属性

然后我更改User.resx属性:

构建操作:嵌入式资源 复制到输出:目录不复制 自定义工具:PublicResourceProxyGenerator 自定义工具命名空间:空 现在我不能使用Resources.User.FirstName我必须使用app\u GlobalResources.User.FirstName

我很高兴这是工作。但昨天是我在测试服务器上的第一次发布,资源不起作用

文件未复制到服务器

我更改User.resx属性

构建操作:内容 复制到输出:目录不复制 自定义工具:GlobalResourceProxyGenerator 自定义工具命名空间:空
复制文件,但应用程序抛出与我在上面共享的相同的异常,并且资源在localmachine中不起作用,有什么建议吗?

请考虑以下有关资源的注释:

将资源文件添加到ASP.NET项目的App_GlobalResources特殊文件夹时,GlobalResourceProxyGenerator自定义工具将用于您的资源,它将在App_GlobalResources程序集中的资源命名空间中生成一个内部类,用于管理资源

此类资源是内部资源,其访问修饰符无法更改。 它们不能用于数据注释属性,如[Display]或验证属性

可以通过调用Resources.ResourceFile.ResourceProperty直接在视图或代码中使用它们

使用ResXFileCodeGenerator作为自定义工具的嵌入式资源将在默认命名空间+文件夹层次结构的命名空间中生成公共资源文件

默认情况下,这些资源是公共的,但是您可以使用designer更改它们的访问修饰符。还可以通过更改自定义工具名称空间属性在自定义名称空间中生成它们

它们可用于数据注释属性,如[Display]或验证属性

通过调用SomeNamespace.ResourceFile.ResourceProperty,可以直接在视图或代码中使用它们


打开资源文件,将访问修饰符更改为public,不要将其作为嵌入式资源,因为这将生成另一个程序集,并附加项目程序集名称和.resources后缀,这将使您在部署后很难更改任何资源值,使其不嵌入并复制到输出目录,以便以后可以选择更改resx文件,而无需部署dll。

谢谢您的帮助

我做到了:

创建文件夹资源 将所有资源从App_GlobalResources移动到新文件夹 更改所有文件属性: 构建操作:嵌入式资源

复制到输出:始终复制

自定义工具:PublicResXFileCodeGenerator

自定义工具名称空间:资源

此设置允许我将访问修改器resx文件更改为Public

现在该项目在本地机器上工作。 发布期间的文件resx正在处理到serwer。
服务器应用程序正在工作。

是否可以为新的resx文件创建模板?是的,有一些解决方案可以简化任务。您可以创建新的ItemTemplate或操作现有的ItemTemplate来执行所需的操作。如果需要更多帮助,是否可以为新的resx文件创建模板?添加一个包含上述描述的新问题,并在那里提问。每个stackoverflow postthread专用于一个问题。有关更多信息,请参阅:通常您不需要发布结论。但是你对这篇文章的回答很好,也很有用,所以我对它投了更高的票。如果你问了一个新问题,请随时通知我:你通过问这个问题帮助了我,因为我试过了,不再知道默认属性:D,并将设置恢复为默认设置对我有帮助