小编Eri*_*ric的帖子

当项目包含外语资源时,dotnet构建失败

[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):错误MSB4062:无法从程序集Microsoft加载"Microsoft.Build.Tasks.AL"任务. Build.Tasks.Core,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.

我可以提供重现此错误的步骤:

  1. 在Visual Studio中创建一个C#控制台应用程序,将其命名为"DotNetBugTest"
  2. 在构建下编辑项目属性,取消选中"首选32位"(控制台应用程序工件)
  3. 在项目的根级别添加资源,将其命名为"Messages.resx"
  4. 添加一个字符串资源,将其命名为"A",并将其命名为"English"
  5. 在项目的根级别添加另一个资源,将其命名为"Messages.fr-CA.resx"
  6. 添加相同的字符串资源,将其命名为"A",并将其命名为"French"
  7. 现在在"程序类"中,添加以下内容:

:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这在Visual Studio中运行良好.输出:

en=English
fr=French
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试从命令行编译它:

dotnet build --configuration Debug
Run Code Online (Sandbox Code Playgroud)

你得到错误.

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

提前致谢...

.net c# resources build target-sdk

11
推荐指数
1
解决办法
1191
查看次数

在Visual Studio(2013)中定义"CustomDictionary.xml"架构的正确方法?

我正在使用自定义词典(CustomDictionary.xml)进行代码分析,它的工作方式应该如此.但是,我不断收到警告,告诉我XML文件没有正确定义其XSD架构位置:

CustomDictionary.xml警告

CustomDictionary.xsd在我的机器上找到了XSD(),并且我将URI的方案指定为类型file:

file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2012.0/Team%20Tools/Static%20Analysis%20Tools/Schemas/CustomDictionary.xsd
Run Code Online (Sandbox Code Playgroud)

使用此URI,Chrome可以很好地找到XSD文件.那就是说,我如何CustomDictionary.xsd从内部正确引用CustomDictionary.xml

到目前为止我发现的内容表明以下内容应该有效,但事实并非如此:

<Dictionary
  xmlns="http://www.w3schools.com"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/ file:/.../CustomDictionary.xsd">
Run Code Online (Sandbox Code Playgroud)

(请注意,CustomDictionary.xsd为了清楚起见,我已经截断了路径.)

关于我做错的任何建议?

xml xsd code-analysis visual-studio visual-studio-2013

7
推荐指数
1
解决办法
490
查看次数

IIS7(Windows)身份验证 - 无法弄清楚为什么新网站出现错误401

我正在尝试在IIS服务器上创建一个新网站,其中的网站使用Windows身份验证就好了.但是,对于我的生活,我无法弄清楚为什么我的新网站拒绝访问(401.2)

基本上,我创建了一个新网站并添加了一个.html文件("Hello,World").我可以很好地访问它.但是关闭匿名,离开Windows身份验证,我会收到提示ID/PWD,结束总是401.2

所以,我决定在同一个网络服务器上创建一个新网站作为现有工作网站的副本.我甚至已经离开并使新网站共享相同的应用程序池和相同的物理路径.这样,据我所知,两个网站之间唯一可能的差异现在是这两个网站的IIS配置.仍然无法进行身份验证.

我已经切换了绑定,没有帮助.

我甚至比较了applicationHost.config中的设置,确保它们是相同的.

有任何想法吗?提前致谢.

authentication iis

5
推荐指数
1
解决办法
2万
查看次数

VS2012下使用MEF和Lazy&lt;T,TMetadata&gt;

我正在取一些我在 VS2010 中编写的 MEF 代码,并在 VS2012 中再次编写它。不幸的是,我卡在了这个简单的界面上:

  public interface IModulesContainer
  {
    [ImportMany]
    IEnumerable<Lazy<IModule, IModuleMetadata>> Container { get; }
  }
Run Code Online (Sandbox Code Playgroud)

VS2012 在这方面有一个编译错误:

Error   Using the generic type 'System.Lazy<T>' requires 1 type arguments
Run Code Online (Sandbox Code Playgroud)

我知道有两个 System.Lazy<> 泛型类,一个采用一种参数类型,另一个采用两种(第二个是元数据)。

我不知道如何让 VS2012 识别后一类。(两者都在 System 命名空间下)

VS2010 看到它就好了。我错过了什么?

提前致谢,--埃里克

mef composition c#-4.0 visual-studio-2012

5
推荐指数
0
解决办法
526
查看次数