2013-02-18 55 views
0

对不起,在这里有一个没有问题的问题......在Google和MS上花了一个小时帮助文档,我的头看起来是在错误的地方,我无法弄清楚这一点。在项目文件结构中包含引用

我有一个在Visual Studio 2012中设置的C#项目,它引用了我自己的硬盘驱动器(NetOffice .dlls是特定的,用于Excel Interop)的一些.dll文件。我一直通过右键点击我的引用文件夹来添加它们,去添加引用,然后去浏览找到这些文件。在这一点上,他们包括在内,一切都如预期般运作。

当我分享项目时会出现问题。我正在使用Git来保持我和一些团队成员之间的项目协调。我会执行我的承诺,并推动它,然后让我的队友做他的拉。一切正常显示在他的电脑上,但是当我们打开项目时,它告诉我NetOffice.dll缺失。

我猜这是因为这些文件只在我的计算机上本地链接,但我无法弄清楚,对于我的生活,如何使.dll文件结构中存在,以便他们当我推动它时,与项目一起旅行。

我们也有一些NuGet软件包,我们也使用它们,它们似乎在传输后工作得很好。我也进入了NetOffice的.dll属性,并将“复制本地”设置为true,但它仍未包含在内。

我想要的是能够链接引用,然后发送整个事情(包括DLL)给我的队友,我做错了什么?我想我只想在项目结构中包含.dlls,但是......我只是不理解某些东西。请帮忙吗?

+0

为什么这个问题downvoted ?? ??人们,如果你们低调,至少有礼貌来解释倒行逆施! – Christian 2013-02-18 20:37:28

+0

因为@克里斯蒂安显然是我在发帖之前花了研究答案的最后四个小时没有计算在内?阁下原谅我是新的,我猜...(对不起,有点不专业,但是要求一个诚实的问题,尽我所能,然后得到低估)更令人沮丧。) – 2013-02-18 20:40:09

+0

如果你有非公开的依赖性变化很大,可能值得考虑创建一个本地NuGet存储库。这样开发人员就可以使用NuGet解决所需的依赖关系,并且从依赖项创建的二进制文件不必添加到源代码管理中。如果依赖关系相当稳定,那么将它们添加到源代码控制通常不是问题。 – poke 2013-02-18 20:57:35

回答

2

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

步骤3和4是不是真的有必要的解决方案文件夹,但它们有助于保持组织的事情。

+0

谢谢!出于某种原因,我早就解雇了这个想法。我想我最近有一个经验,那样做没有帮助,因为文件路径不是相对的。这固定了它。 – 2013-02-18 20:37:23

1

尽管这不是很好的做法,包括在你的git仓库的二进制文件,这样做会解决你的问题。

快速修复可能是在您的存储库中明智的位置创建lib目录(我不是C#开发人员,但Gama Felix的建议似乎是正确的)。

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

+0

是的,我要去做伽马说的话,但我想知道,你会说最佳做法是什么? – 2013-02-18 20:38:13

+0

更好的做法是使用某种包管理器。我的经验主要是Java([Maven](http://maven.apache.org/))和Ruby([Bundler](http://gembundler.com/)),所以我不能给你一个可靠的建议对于C# - 尽管我认为NuGet可能以类似的方式工作。从本质上讲,你想要将你的代码与它的依赖关系分开。 – 2013-02-18 20:45:01

+0

你应该调用'lib'文件夹,因为'bin'dir包含了编译时由Visual Studio生成的文件。 – poke 2013-02-18 20:46:30

1

让我们假设你的源代码控制的根文件夹名为SourceRoot
和解决方案的文件是一个名为JaySolutionFolder文件夹下
我喜欢:
添加一个新的文件夹到你的源代码控制,SourceRoot下,所谓的SharedDlls
复制所有外部DLL到该文件夹​​。
添加这个dll引用形成SharedDlls到您的项目。
提交此文件夹
现在你的队友必须得到JaySolutionFolder & SharedDlls来编译源代码。
稍后,这个SharedDlls可以成为构建过程的目标目录(使用像TFS Bulid,NANT或其他工具)
这将是一种最小化团队开发问题的方法。
在释放和软件的安装,你可以使用安装软件包建设者installshieldVisual Studio Setup Package或...解决外部DLL问题
合这有助于。

相关问题