c# - 当项目包含外语资源时,Dotnet 构建失败

标签 c# .net build resources target-sdk

我使用的是 Visual Studio 15.6.3,dotnet SDK 2.1.102。

最近,(可能在更新之后)我追踪了一个 dotnet 构建错误,该错误显示在包含外语资源的项目中。错误信息如下:

C:\Program Files\dotnet\sdk\2.1.102\Microsoft.Common.CurrentVersion.targets(3570,5): error MSB4062: The "Microsoft.Build.Tasks.AL" task could not be loaded from the assembly Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.  Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

我可以提供重现此错误的步骤:
  • 在 Visual Studio 中创建一个 C# 控制台应用程序,将其命名为 DotNetBugTest .
  • 编辑项目属性,在 build 下,取消选中“Prefer 32-bit”(控制台应用程序工件)。
  • 在项目的根级添加一个资源,命名为 Messages.resx .
  • 添加一个字符串资源,命名为 A ,并给它文本 English .
  • 在项目的根级别添加另一个资源,命名为 Messages.fr-CA.resx .
  • 添加相同的字符串资源,命名为 A ,并给它文本 French .
  • 现在在 Program类,添加以下内容:
    class Program
    {
        static void Main(string[] args)
        {
            var rm = new ResourceManager("DotNetBugTest.Messages", typeof(Program).Assembly);
    
            var en = CultureInfo.CreateSpecificCulture("en-US"); 
            var fr = CultureInfo.CreateSpecificCulture("fr-CA"); 
    
            Console.WriteLine($@"en={rm.GetString("A", en)}");
            Console.WriteLine($@"fr={rm.GetString("A", fr)}");
    
            Console.ReadKey();
        }
    }
    

  • 这在 Visual Studio 中运行良好。输出:
    en=English
    fr=French
    

    但是,如果您尝试从命令行编译它:
    dotnet build --configuration Debug
    

    你得到错误。

    有人知道如何解决这个问题吗?或者甚至建议去哪里看?

    最佳答案

    关于c# - 当项目包含外语资源时,Dotnet 构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49430228/

    相关文章:

    .net - 重建方案失败,但一个一个重建项目会成功

    c++ - netbeans IDE、测试和调试测试中的 c++ 项目中构建/清理和构建之间的区别

    c# - 使用 XmlReader C# 读取重复 block

    C#:将字段定义为私有(private)但可在泛型中修改

    c# - WP8 : Button events triggering when navigating in panorama/pivot

    c# - Serilog SelfLog 不输出任何东西

    c# - 我应该如何构建我的领域模型

    .net - 在.Net中打开XPS文档会导致内存泄漏

    c# - 从引用中删除版本号(避免 "Could not load file or assembly..."错误)?

    在 Cygwin 中构建具有 LAME 支持的 SoX