每个C#项目的不同Target .Net Framework

时间:2011-06-06 13:29:02

标签: c# linq

如果我使用.net2.0这个 X项目,并且 X项目正在调用正在使用的 Y项目,那没关系.net3.5 ..我在 Y项目中获得了自定义按钮,我在 X项目中使用了该按钮, Y项目中有一个方法有LINQ和 X项目正在调用该方法...我无法测试它,因为我安装了最新的.net框架.. :)

这是我的项目代码,其中包含.net3.5

    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    public static extern int GetDriveType(string lpRootPathName);        

    public enum DriveType : int
    {
        Unknown = 0,
        NoRoot = 1,
        Removable = 2,
        Localdisk = 3,
        Network = 4,
        CD = 5,
        RAMDrive = 6
    }
    var selectedDrives = from s in Environment.GetLogicalDrives() where Enum.GetName(typeof(DriveType), GetDriveType(s)).Equals(DriveType.Removable) select s;
        foreach (String drives in selectedDrives)
        {
            MessageBox.Show(drives);

        }

如果错误的话,还要纠正LINQ语句.. :)

2 个答案:

答案 0 :(得分:3)

如果执行此操作的计算机上未安装3.5框架,则它将失败,因为System.Linq.dll将不存在。您可以使用LINQBridge与.NET 2.0和C#3.0(这将使您能够访问LINQ到对象的重新实现),但实际上可能更容易让客户端升级。 2.0现在已经很老了。

或者......如果你需要的只是一个where,那么就有了更简单的路线。例如:

foreach (String drives in Environment.GetLogicalDrives())
{
    if(!Enum.GetName(typeof(DriveType), GetDriveType(s))
        .Equals(DriveType.Removable))
    {
        continue;
    }
    MessageBox.Show(drives);
}

答案 1 :(得分:0)

.NET 2.0项目无法调用.NET 3.5项目中的方法。