gpt4 book ai didi

visual-studio-2008 - 编译期间的汇编解析顺序

转载 作者:行者123 更新时间:2023-12-02 00:44:23 24 4
gpt4 key购买 nike

VS 2008 如何确定在何处查找应用程序编译期间使用的程序集?必须使用一些命令。 Tools\Settings 或其他东西中是否使用了某些东西?我正在寻找在编译过程中发生程序集解析的顺序。

最佳答案

真正决定顺序的不是 VS 2008,而是编译器。我知道您没有指定语言,但我将使用 C# 作为示例(我相信许多其他语言也可以作为很好的示例)。如果您使用的是 C#,则编译器首先处理 csc.rsp(位于 csc.exe 旁边的响应文件),然后处理命令行/r: 选项。操作顺序决定引用哪个程序集。因此,首先找到 csc.rsp 中的程序集引用,然后找到命令行程序集。这是编译时。

这是 C# 响应文件的文档:

http://msdn.microsoft.com/en-us/library/8a1fs1tb(VS.71).aspx

这是 C# 命令行编译器选项的文档:

http://msdn.microsoft.com/en-us/library/2fdbz5xd(VS.71).aspx

如果您想使用自定义响应文件,则必须使用命令行编译器。否则,您添加到项目引用文件夹的引用将决定您在 VS 中生成时出现在命令行上的内容。您可以通过执行构建并查看输出窗口 Ctrl+W+O 来查看这些引用在命令行中出现的顺序。

运行时程序集绑定(bind)也不是由 VS 决定的,而是由 CLR 决定的。一个快速的总结是,CLR 搜索一个程序集是否以前加载到内存中,检查 GAC,然后根据代码中是否有对 Load 的显式调用执行探测,然后是 codeBase 的配置文件设置,然后是应用程序文件夹下的一组文件夹,这些文件夹以程序集的 exe 或 dll 版本命名。这是 MSDN 链接:

http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

你问这个问题的事实让我想知道你的动机是否是为了解决程序集绑定(bind)问题。 .NET Framework SDK 中有一个名为程序集绑定(bind)日志查看器 (Fuslogvw.exe) 的工具可帮助解决这些类型的问题:

http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx

Richard Grimes 的 Fusion Workshop 是网络上使用程序集绑定(bind)和 Fusion 日志查看器的几个最佳资源:

http://www.grimes.demon.co.uk/workshops/fusionWS.htm

几年前,作为 CLR 团队成员的 Suzanne Cook 发表了一系列关于 CLR 绑定(bind)的精彩文章:

http://blogs.msdn.com/suzcook/default.aspx

希望对您有所帮助,

关于visual-studio-2008 - 编译期间的汇编解析顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1325745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com