[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的公共类.
我可以提供重现此错误的步骤:
:
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)
你得到错误.
有人知道如何解决这个问题吗?甚至建议在哪里看?
提前致谢...
我正在使用自定义词典(CustomDictionary.xml)进行代码分析,它的工作方式应该如此.但是,我不断收到警告,告诉我XML文件没有正确定义其XSD架构位置:

我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为了清楚起见,我已经截断了路径.)
关于我做错的任何建议?
我正在尝试在IIS服务器上创建一个新网站,其中的网站使用Windows身份验证就好了.但是,对于我的生活,我无法弄清楚为什么我的新网站拒绝访问(401.2)
基本上,我创建了一个新网站并添加了一个.html文件("Hello,World").我可以很好地访问它.但是关闭匿名,离开Windows身份验证,我会收到提示ID/PWD,结束总是401.2
所以,我决定在同一个网络服务器上创建一个新网站作为现有工作网站的副本.我甚至已经离开并使新网站共享相同的应用程序池和相同的物理路径.这样,据我所知,两个网站之间唯一可能的差异现在是这两个网站的IIS配置.仍然无法进行身份验证.
我已经切换了绑定,没有帮助.
我甚至比较了applicationHost.config中的设置,确保它们是相同的.
有任何想法吗?提前致谢.
我正在取一些我在 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 看到它就好了。我错过了什么?
提前致谢,--埃里克