小编dra*_*fly的帖子

将间接引用的程序集复制到输出目录 - 缺少程序集

可能重复:
Copy-local如何工作?

我有以下情况:

  • 有一个名为OLAF.Tools的项目,该项目引用C:\ Program Files\SQLXML 4.0\bin\Microsoft.Data.SqlXml.dll中的Microsoft.Data.SqlXml.Reference Copy Local属性设置为True.当我在bin目录中构建该项目时,我可以看到OLAF.Tools.dll和Microsoft.Data.SqlXml.dll
  • 有一个名为OLAF.Generator的控制台应用程序,该应用程序引用了OLAF.Tools(我使用Project选项卡添加了引用).当我在bin目录中构建该应用程序时,我只能看到OLAF.Generator.exe和OLAF.Tools.dll - 没有Microsoft.Data.SqlXml.dll,是什么让我感到满意.另一个奇怪的事情是,即使该DLL丢失,应用程序也正常执行.

所以我的问题是:

  • 为什么Microsoft.Data.SqlXml.dll没有复制到OLAF.Generator控制台应用程序的bin文件夹?
  • 应用程序如何解析可以找到Microsoft.Data.SqlXml.dll的目录?

谢谢你,帕维尔

编辑1 :(在Marc Gravell回复后)

@Marc Gravell:你的回答让我深思熟虑,因为我可以发誓我总能在主应用程序的bin目录中看到间接依赖的程序集.恕我直言,我不同意你的意见 - 尽一切应有的尊重:)

当然,引用不是物理级联的(我们正在讨论与类,接口等的强关系) - 这正是我在构建OLAF.Tools库时想要实现的.该库提供了一个抽象级别,它包含工厂,一个工厂接受作为参数字符串并返回接口.该接口的一个特定实现使用Microsoft.Data.SqlXml组件.因此,OLAF.Generator使用位于OLAF.Tools中的接口,但不知道Microsoft.Data.SqlXml中的组件.

除此之外(我想我们都知道我试图在前一段中解释的内容),在构建应用程序时,应复制依赖程序集(如果Copy Local设置为TRUE).我刚刚编写了示例应用程序,Project B lib引用了Project A lib,而Project C(控制台应用程序)引用了Project B.在Project C的bin目录中,我可以看到所有:Project A.dll,Project B.dll&Project C.exe.因此,在讨论的场景中,Microsoft.Data.SqlXml不会在OLAF.Generator bin文件夹中结束的原因与该程序集本身有关.

编译器/ visual studio是否知道Microsoft.Data.SqlXml位于自动探测的目录中(或者它在GAC中),这就是为什么不复制该程序集的原因?

编辑2:我刚刚检查了GAC,事实上,Microsoft.Data.SqlXml.dll安装在GAC中.

.net c# msbuild visual-studio

15
推荐指数
1
解决办法
8197
查看次数

Session.Abandon调用后SessionID仍然相同

我正在编写一些基于SessionID的日志代码...

但是,当我注销(调用Session.Abandon)并再次登录时,SessionID仍然是相同的.基本上我的PC上的每个浏览器都有自己的会话ID"附加",并且由于某种原因它不会改变:/

有什么想法发生了什么?

我的Session配置如下所示:

    <sessionState
       mode="InProc"
       timeout="1" />
Run Code Online (Sandbox Code Playgroud)

谢谢,Paweł

asp.net sessionid

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

两列上的聚簇索引

我有一个多对多的表,让我们说:

PersonJob(personId,jobId)
Run Code Online (Sandbox Code Playgroud)

with clustered index(personId,jobId).

问题是:

如果在SQL中的某个地方,我会进行如下查询:

SELECT *
FROM PersonJob JOIN Job ON PersonJob.jobId = Job.jobId
.......
Run Code Online (Sandbox Code Playgroud)

是否会利用该聚集索引在PersonJob表中查找具有特定jobId的记录?或者我最好在PersonJob表的jobId列上创建新的非群集非唯一索引?

谢谢帕维尔

sql-server indexing clustered-index

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

最轻量级的.NET集合

我想知道,.NET中的集合实现有什么不同.

例如,我经常使用List<int>etc来存储项目列表.但是我只需要一个容器用于物品,我想我不需要所有的功能List.我只需要一个具有put方法的容器,并使客户端代码能够迭代容器.

是否有更快,更轻量级的集合实现IEnumerable<T>在.NET 中实现?

.net c# c#-4.0

13
推荐指数
2
解决办法
5634
查看次数

Bootstrap ParseError:mixins.less中的第648行语法错误:648:25 647

更新到Bootstrap 3.1.0后,编译较少的文件时出现此错误:

ParseError:mixins.less中的第648行语法错误:648:25 647

padding-right: (@grid-gutter-width / 2); 648   &:extend(.clearfix all); 649 }
Run Code Online (Sandbox Code Playgroud)

我使用凹版,版本:1.1.9.我该如何解决?

less twitter-bootstrap twitter-recess twitter-bootstrap-3

13
推荐指数
2
解决办法
3468
查看次数

为什么在DOMContentLoaded之前发生First Paint

我正在深入研究随谷歌Chrome一起提供的性能工具,因为我正试图了解性能改进技术.我正在玩Timeline选项卡,我发现在我的页面上,First Paint事件发生在DOMContentLoaded事件之前.我读了一些文章,据说当浏览器开始向用户显示内容的第一时刻必须在DOMContentLoaded之后.有人可以解释一下这是真的吗?

google-chrome google-chrome-devtools domcontentloaded

13
推荐指数
1
解决办法
2115
查看次数

如何将JavascriptSerializer序列化DateTime字符串转换为Javascript Date对象

在使用DateTime字段序列化对象后JavaScriptSerializer,我看到该DateTime字段如下所示:

EffectiveFrom: "/Date(1355496152000)/"
Run Code Online (Sandbox Code Playgroud)

如何将此字符串转换为Javascript Date对象?

javascript asp.net

12
推荐指数
4
解决办法
2万
查看次数

ASP .NET中的Thread.CurrentPrincipal.Identity - 使用安全

在我的AuthenticateRequest事件处理程序中,我设置了Thread的主体.这是我的IHttpModule的一部分:

    public void Init(HttpApplication context)
    {
        context.AuthenticateRequest += AuthenticateRequest;
    }

    private void AuthenticateRequest(object sender, EventArgs e)
    {
        var principal = CreatePrincipal();
        HttpContext.Current.User = principal;
    }
Run Code Online (Sandbox Code Playgroud)

但我有一个程序集,不应该访问System.Web,所以我不能使用HttpContext.Current.User,但我需要访问当前主体.我的第一个想法是将我的方法改为:

System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = principal;
Run Code Online (Sandbox Code Playgroud)

并在需要时使用Thread.CurrentPrincipal.

但据我记得,在线程本地存储中存储请求特定内容是不安全的,因为多个线程可以处理相同的请求,所以我猜它与Thread.CurrentPrincipal相同.或不?

.net asp.net httpcontext

12
推荐指数
1
解决办法
6432
查看次数

移位运算符 - 操作数必须可转换为整数基元?

我正准备参加Java考试,我正在阅读"OCA Java SE 8程序员学习指南(考试1Z0-808)".在运营商部分,我发现了这句话:

移位运算符:移位运算符采用两个操作数,其类型必须可转换为整数基元.

我觉得很奇怪,所以我用很长时间测试它:

public class HelloWorld{

     public static void main(String []args){
         long test = 3147483647L;
         System.out.println(test << 1);

     }
}
Run Code Online (Sandbox Code Playgroud)

并且它工作,没有编译器错误和结果是正确的.这本书有错误还是我误解了书中的引用?

java bit-shift java-8

9
推荐指数
1
解决办法
320
查看次数

使用$ compileProvider.debugInfoEnabled(false)从DOM元素获取范围;

我正在尝试利用AngularJS的新发现.其中之一是:

$compileProvider.debugInfoEnabled(false);
Run Code Online (Sandbox Code Playgroud)

问题是我的一些代码依赖于angular.element(el).scope()调用.所以他们将不再工作.

有没有办法重写angular.element(el).scope()表达式以某种方式获得元素的范围而不启用调试信息?

angularjs

9
推荐指数
1
解决办法
845
查看次数