Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
C# 在项目文件结构中包含引用_C#_Git_Visual Studio 2012 - Fatal编程技术网

C# 在项目文件结构中包含引用

C# 在项目文件结构中包含引用,c#,git,visual-studio-2012,C#,Git,Visual Studio 2012,抱歉,这里有一个不太好的问题…在谷歌和MSs帮助文档上花了一个小时,我的脑袋好像放错地方了,我想不出来 我在Visual Studio 2012中建立了一个C#项目,其中引用了我自己硬盘上的一些.dll(具体来说是NetOffice.dll,用于Excel Interop)。我一直在通过右键单击我的references文件夹来添加它们,然后去添加Reference,然后去浏览查找文件。在这一点上,他们被包括在内,一切都按照我的预期工作 问题发生在我共享项目时。我使用Git来保持我和几个团队成员之

抱歉,这里有一个不太好的问题…在谷歌和MSs帮助文档上花了一个小时,我的脑袋好像放错地方了,我想不出来

我在Visual Studio 2012中建立了一个C#项目,其中引用了我自己硬盘上的一些.dll(具体来说是NetOffice.dll,用于Excel Interop)。我一直在通过右键单击我的references文件夹来添加它们,然后去添加Reference,然后去浏览查找文件。在这一点上,他们被包括在内,一切都按照我的预期工作

问题发生在我共享项目时。我使用Git来保持我和几个团队成员之间的项目协调。我将运行我的提交,并推动它,然后让我的队友做他的拉。所有东西都正确地显示在他的计算机上,但是当我们打开项目时,它告诉我NetOffice.dll丢失了

我猜这是因为文件只在我的计算机上本地链接,但我一生都不知道如何使.dll存在于文件结构中,以便在我推送项目时它们随项目一起移动

我们也使用了一些NuGet软件包,它们在被转移后似乎工作得很好。我还查看了NetOffice的.dll属性,并将“复制本地”改为
true
,但它仍然没有包括在内


我所希望的是能够链接参考资料,然后将整个内容(包括DLL)发送给我的队友,我做错了什么?我想我只想在项目结构中包含.dll,但是。。。我只是不明白。有什么帮助吗?

1在文件系统中创建一个与解决方案文件相同级别的文件夹。
2将外部dll复制到该文件夹。
3在解决方案中添加解决方案文件夹。
4使用添加现有项将每个dll添加到解决方案文件夹中
5引用解决方案中的Dll


第3步和第4步实际上不是必需的,但它们有助于使事情井然有序。

1在文件系统中创建一个与解决方案文件处于同一级别的文件夹。
2将外部dll复制到该文件夹。
3在解决方案中添加解决方案文件夹。
4使用添加现有项将每个dll添加到解决方案文件夹中
5引用解决方案中的Dll


第3步和第4步其实并不必要,但它们有助于保持事情的条理化。

尽管在git存储库中包含二进制文件不是一个好的做法,但这样做可以解决问题

快速修复方法可能是在存储库中合理的位置创建
lib
目录(我不是C#开发者,但Gama Felix的建议似乎是正确的)


然后提交这些文件夹并推送到服务器。

尽管在git存储库中包含二进制文件不是一个好的做法,但这样做可以解决问题

快速修复方法可能是在存储库中合理的位置创建
lib
目录(我不是C#开发者,但Gama Felix的建议似乎是正确的)


然后提交这些文件夹并推送到服务器。

假设您的源代码管理根文件夹名为SourceRoot
您的解决方案文件位于名为JaySolutionFolder
我更喜欢:
在SourceRoot下向源代码管理中添加一个新文件夹,名为SharedDLS
将所有外部DLL复制到此文件夹。
将此dll引用表单SharedDLS添加到项目中。
提交此文件夹
现在,您的队友必须获得JaySolutionFolder&sharedlls来编译源代码。
稍后,这个sharedll可能成为构建过程的目标目录(使用Bulid或其他工具)
这将是一种最小化基于团队的开发问题的方法。
在版本和软件安装中,您可以使用安装程序或软件包生成器,如或。。。解决外部DLL问题

跳这个有帮助

假设您的源代码管理根文件夹名为SourceRoot
您的解决方案文件位于名为JaySolutionFolder
我更喜欢:
在SourceRoot下向源代码管理中添加一个新文件夹,名为SharedDLS
将所有外部DLL复制到此文件夹。
将此dll引用表单SharedDLS添加到项目中。
提交此文件夹
现在,您的队友必须获得JaySolutionFolder&sharedlls来编译源代码。
稍后,这个sharedll可能成为构建过程的目标目录(使用Bulid或其他工具)
这将是一种最小化基于团队的开发问题的方法。
在版本和软件安装中,您可以使用安装程序或软件包生成器,如或。。。解决外部DLL问题

跳这个有帮助

谢谢!出于某种原因,我很早就放弃了这个想法。我想我最近有过这样的经历:这样做没有帮助,因为文件路径不是相对的。这个修好了,谢谢!出于某种原因,我很早就放弃了这个想法。我想我最近有过这样的经历:这样做没有帮助,因为文件路径不是相对的。这修正了它。为什么这个问题被否决了??人们,如果你投了反对票,至少有礼貌地解释你投的反对票!因为,@Christian,显然我在发帖前花在研究答案上的最后四个小时不算什么?上帝原谅我是新来的我想。。。(抱歉,一个不专业的人,但问一个诚实的问题,这是更令人沮丧的,最好的描述,然后被否决。)如果你有非公共的依赖性,改变了很多,它可能是值得考虑创建一个本地NuGET储存库。这样,开发人员就可以使用NuGet获取并解析所需的依赖项,并且不必将依赖项中创建的二进制文件添加到源代码管理中。如果依赖关系相当稳定