C# 如何为调试和发布创建单独的资源文件?

C# 如何为调试和发布创建单独的资源文件?,c#,asp.net-mvc,embedded-resource,C#,Asp.net Mvc,Embedded Resource,是否可以创建两个文件,例如Text.Debug.resx和Text.Release.resx,在调试和发布程序期间自动加载相应的资源文件?我将包装ResourceManager: public class Resources { private readonly ResourceManager _resourceManager; public Resources() { #if DEBUG const string configuration = &qu

是否可以创建两个文件,例如Text.Debug.resx和Text.Release.resx,在调试和发布程序期间自动加载相应的资源文件?

我将包装ResourceManager:

public class Resources
{
    private readonly ResourceManager _resourceManager;

    public Resources()
    {
#if DEBUG
        const string configuration = "Debug";
#else
        const string configuration = "Release";
#endif

        _resourceManager = new ResourceManager($"StackOverflow.Text.{configuration}", typeof(Resources).Assembly);
    }

    public string GetString(string resourceKey)
    {
        return _resourceManager.GetString(resourceKey);
    }
}
显然,在更新管理器时适当地修改名称空间

编辑 您还可以将其实现为静态类,以避免必须新建包装器的实例:

public static class Resources
{
    private static ResourceManager _resourceManager;

    public static string GetString(string resourceKey)
    {
        if (_resourceManager != null)
        {
            return _resourceManager.GetString(resourceKey);
        }

#if DEBUG
        const string configuration = "Debug";
#else
        const string configuration = "Release";
#endif

        _resourceManager = new ResourceManager($"StackOverflow.Text.{configuration}", typeof(Resources).Assembly);

        return _resourceManager.GetString(resourceKey);
    }
}

在“属性:调试和发布”下创建2个子目录。将Resources.resx和Resources.Designer.cs文件复制到每个目录中。它将使用名称空间ProjectName.Properties.Debug或ProjectName.Properties.Release重新生成Resources.Designer.cs文件。编辑.csproj文件以对这些文件设置适当的条件,大致如下:

<Compile Include="Properties\Debug\Resources.Designer.cs" Condition="$(Configuration.StartsWith('Debug')) ">
   ...

<EmbeddedResource Include="Properties\Debug\Resources.resx" Condition="$Configuration.StartsWith('Debug'))">
   ...

但是这种方式VisualStudio不会自动生成属性,所以var a=Text.deerName;不再工作,只需执行Resources.GetStringdeerName。我认为如果不为VisualStudio编写插件,就不可能实现您的建议。
namespace ProjectName.Properties
{
    class Resources
#if DEBUG
        : ProjectName.Properties.Debug.Resources
#else
        : ProjectName.Properties.Release.Resources
#endif
    {
    }
}