当我将CSharpCodeProvider类设置为使用.NET 3.5时,它会尝试加载某些引用的DLL时出错:
Line number 0, Error Number: CS0006, 'Metadata file 'System.Linq.dll' could not be found;
Line number 0, Error Number: CS0006, 'Metadata file 'System.Collections.dll' could not be found;
问题是,如果我将其设置为2.0,它可以工作,但它不能使用LINQ。
现在在其他线程中有解决方案说这是因为DLL不在正确的位置,并提供如下解决方案:
typeof(System.Xml.Linq.Extensions).Assembly.Location
要获取Linq位置的位置,但由于我的程序工作方式,我不知道我可能需要加载哪些DLL。这对外部库来说不是问题,因为用户需要输入它们的位置,但对于System dlls,我只能使用"System.Linq"
或"System.Collections"
获取其位置?
答案 0 :(得分:6)
我不知道System.Collections.dll
或System.Linq.dll
。 LINQ的大部分位于System.Core.dll
,并且集合位于mscorlib
和System.dll
IIRC中。您需要区分名称空间和程序集。 (您使用using
指令导入名称空间,并在项目中添加对程序集的引用。)
您对哪些课程感兴趣?在MSDN中查找它们以查看它们所在的程序集。