小编D-S*_*ect的帖子

基于GAC内容设置的.NET参考"复制本地"真/假

我们在Win Forms项目中遇到了一个非常有趣的问题.它已经解决了.我们知道发生了什么,但我们想知道它为什么会发生.这可能有助于将来遇到类似问题的其他人.

WinForms项目在我们客户的两台PC上失败了.该错误是一个模糊的kernel.dll错误.该项目在另外3台PC上运行良好.

我们发现我们的发布文件夹中缺少.DLL(log4net.dll - 一个非常流行的开源日志库).它以前在我们的发布文件夹中.为什么在最新版本中缺少它?

它丢失了,因为我必须在我的开发盒上安装了一个程序,该程序使用了log4net.dll,并将其添加到全局程序集缓存中.

当我检查解决方案对log4net.dll的引用时,它们被更改为"copy local = FALSE".它们必须自动更改,因为我的GAC中存在log4net.dll.

这是我的问题开始的地方:

为什么我对log4net.dll的引用从COPY LOCAL = TRUE更改为COPY LOCAL = FALSE?我怀疑是因为它是由另一个程序添加到我的GAC中的.

我们怎样才能防止这种情况再次发生?现在,如果我安装一个使用公共库的软件并将其添加到我的GAC,那么引用该DLL的我的SLN将从Copy Local TRUE更改为FALSE.

.net log4net assemblies gac reference

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

返回通过Where或Select扩展方法过滤的通用IList

public class MyItem
{
    public string Name { get; set; }

    public IList<MyItem> ListByName(string name)
    {
        IList<MyItem> myItems = new List<MyItem>();

        myItems.Add(new MyItem() { Name = "Item 1" });
        myItems.Add(new MyItem() { Name = "Item 2" });
        myItems.Add(new MyItem() { Name = "Item 3" });
        myItems.Add(new MyItem() { Name = "Item 3" });

        return (IList<MyItem>) myItems.Select(i => i.Name == name);
    }
}
Run Code Online (Sandbox Code Playgroud)

我最初得到了一个强制转换异常(IEnumerable to IList),并且显式转换在这里不起作用.

我的目标是返回一个IList,其中MyItem.Name属性等于方法的参数.

这里几个问题:

我应该使用"选择","在哪里",或者两者都不在这里?

在这里返回过滤后的IList的正确方法是什么?

c# linq lambda .net-3.5

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

标签 统计

.net ×1

.net-3.5 ×1

assemblies ×1

c# ×1

gac ×1

lambda ×1

linq ×1

log4net ×1

reference ×1