Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 项目参考与文件参考?_Visual Studio_Reference - Fatal编程技术网

Visual studio 项目参考与文件参考?

Visual studio 项目参考与文件参考?,visual-studio,reference,Visual Studio,Reference,可以通过两种方式在项目中添加引用 项目参考 文件引用 但是,何时使用Project和何时使用文件引用?使用“Project reference”在解决方案中添加对程序集的引用 使用“文件引用”添加对跨解决方案程序集的引用 您没有指定,但我猜您指的是Visual Studio 项目引用和文件引用之间的主要区别在于是否有实时更新可用。在项目引用中,您将能够通过Intellisense等项立即在另一个项目中看到一个项目中编辑的效果。因此,如果您例如添加名为Foo的类,则该类型将立即显示在intelli

可以通过两种方式在项目中添加引用

  • 项目参考
  • 文件引用

  • 但是,何时使用Project和何时使用文件引用?

    使用“Project reference”在解决方案中添加对程序集的引用

    使用“文件引用”添加对跨解决方案程序集的引用


    您没有指定,但我猜您指的是Visual Studio

    项目引用和文件引用之间的主要区别在于是否有实时更新可用。在项目引用中,您将能够通过Intellisense等项立即在另一个项目中看到一个项目中编辑的效果。因此,如果您例如添加名为Foo的类,则该类型将立即显示在intellisense中任何对该项目具有项目引用的项目中

    另一方面,文件引用只能看到磁盘上存在的更改。为了查看更改,必须执行编译并将位写入磁盘

    一般来说,最好使用项目参考


    需要考虑的另一个角度是项目的相关语言。如果两个项目中的语言相同,那么项目到项目的引用将非常有用。如果语言不同,它们更像是文件引用而不是项目引用

    最后,所有引用都是文件引用,项目引用只是一个visual studio功能,它引用的是使用您的解决方案生成的文件,因此每当您生成新的生成时,引用会自动更新,而无需复制和粘贴文件

    我选择文件引用的原因(即使我有源代码或自己创建了程序集)是因为该特定程序集没有太大变化(比如每半年一次)。只是为了节省一些建造时间。此外,有些项目会自动增加其版本号(例如,尝试在解决方案中包含AjaxControlToolkit项目)。

    我刚刚讨论了这个

    我们从一家供应商那里收到了大约53个不同的VS2005 C#解决方案文件,这些文件创建了63个不同的project.dll,所有这些文件都由一个单独的商业应用程序调用

    所有项目都包含对其他项目DLL的文件引用

    这种方法的问题是巨大的:解决方案之间的依赖关系几乎不可能解决,涉及大量“findstr”命令;VS的“查找定义”功能不会找到文件引用DLL的源,它只会显示DLL内函数的定义;由于更改而重新构建很容易出错,而且很麻烦,需要打开许多不同的解决方案来重新构建整个dll集

    我花了数周时间将53个不同的解决方案文件合并为一个,然后花了更多时间将所有文件依赖项更改为项目依赖项。现在,当您“查找定义”时,您将被带到一个源文件。现在,当您更改低级项目时,所有依赖项目都将在您构建(一个)解决方案时生成

    我做了一些额外的更改,但最简单的是将所有单独项目的构建目录设置为solutiondir/bin。这样,所有DLL最终都位于一个位置

    哦,是的:我还将所有引用项目的DLL的“复制本地”设置为“否”。这样,每个dll都会在项目生成时显示在solutiondir/bin中,并由下一个要生成的项目找到


    我们现在唯一的问题是,如果我使用Windows窗体更改了用作另一个项目的数据源的项目,那么Windows窗体将不会在Designer中打开,直到我重新构建作为窗体数据源的项目。一个小的,小的价格来支付项目参考的所有好处。此外,我必须在从svn签出时构建解决方案,因为DLL不在svn中。在上述情况下,设计器无法找到datasource.dll。

    重建项目时,项目引用的所有项目也会自动重建


    这对于文件引用是不正确的。

    实际上这两种方法都使用文件引用。项目参考有助于VS了解何时应该构建所参考的VS项目

    s

    utils参考资料:


    在大多数情况下,我已明确规定我们的开发团队使用文件引用而不是项目引用: 我们在一个高度完整的领域运作。因此,不应随意更改不直接属于此工作的每个组件(即跨其他项目共享的内容)。 因此,我们的想法是(在理想的非新领域工作中),从网络上的发布区域获取子组件的测试、授权、已知版本,并将其包含在解决方案的组件区域中

    这是为了简化维护和测试,因为它应该避免许多类似的版本激增,所有版本都具有不同的构建或SVN编号

    第二个原因(可能是我的C/C++背景)是我想知道我使用的是所有调试版本或所有发布版本。在.NET项目中,这是不容易做到的。我们构建到一个components\$configuration$目录,然后有一个构建后步骤将components\$configuration$复制到上面的目录。 所有文件引用都指向组件目录中的文件,这意味着(我相信)我们确实在整个链中进行了调试和发布构建


    如果您将其导入外部,我认为您需要考虑外出的DLL需要对所有用户都相同,否则,您可能无法稍后轻松地调试问题(从源代码到交付的可执行文件的配置跟踪)。

    < P>我在多个项目中遇到了问题,其中文件引用只是不切断它。过时的引用会导致buku问题。微软推荐