C# 语言资源文件的构造函数在WPF中作为内部而不是公共生成

C# 语言资源文件的构造函数在WPF中作为内部而不是公共生成,c#,wpf,xaml,constructor,resources,C#,Wpf,Xaml,Constructor,Resources,问题在于最后一行: namespace PcgTools.PcgToolsResources { using System; ... some comments global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.Debugge

问题在于最后一行:

namespace PcgTools.PcgToolsResources {
    using System;

   ... some comments
    global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Strings {

    private static global::System.Resources.ResourceManager resourceMan;

    private static global::System.Globalization.CultureInfo resourceCulture;

    [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() {
    }
运行应用程序时返回XAML错误。上面的文件是一个生成的文件(来自strings.resx)

现在,我必须在每次资源文件更改后将行更改为:

internal Strings() {
}

有人知道如何更改以使其由public而不是内部自动生成吗?

可能的解决方案是使用自定义代码生成器。参见此处:

其中副本包含以下由Htin Aung撰写的公认答案



您可以在资源文件中将访问修饰符更改为Public。

这并不能解决此问题。它使类公开,但构造函数仍然是内部的,这意味着不能从其他DLL访问它。我能找到的唯一允许从其他程序集访问它的修复方法是向程序集添加自定义AssemblyInfo.cs,通过手动编辑csproj文件关闭自动生成的程序集信息,并向AssemblyInfo.cs添加属性以提供对所需类的内部访问。请参阅和。当所有属性都是静态的时,为什么需要构造函数?@Palec不确定…内部字符串()行是由框架生成的。我没有尝试删除它(它也是一个旧项目,所以现在我不需要再对项目进行任何更改)
public Strings() {
}