Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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# 如何使用';lib';.Net项目中用于生成依赖项的文件夹?_C#_.net_Svn_Continuous Integration - Fatal编程技术网

C# 如何使用';lib';.Net项目中用于生成依赖项的文件夹?

C# 如何使用';lib';.Net项目中用于生成依赖项的文件夹?,c#,.net,svn,continuous-integration,C#,.net,Svn,Continuous Integration,我需要将我的外部dll依赖项(自动映射,其他…)设置为可以在构建服务器上构建它们的情况。我还想让它们进入subversion,这样构建服务器就可以接收它们 所以我对整个“lib”文件夹都不熟悉。我搜索过谷歌,但这似乎是一种假设,这里没有基本的操作方法。我自己的书不在里面。很长一段时间以来,我都没有一位导师在工作,甚至没有一位可以向我提问的人。。。我真的很想了解我在这里应该做什么的基本原理 我在.Net中编写,使用Jenkins作为我的CI服务器(新的)和msbuild(新的)。我正在听svn:外

我需要将我的外部dll依赖项(自动映射,其他…)设置为可以在构建服务器上构建它们的情况。我还想让它们进入subversion,这样构建服务器就可以接收它们

所以我对整个“lib”文件夹都不熟悉。我搜索过谷歌,但这似乎是一种假设,这里没有基本的操作方法。我自己的书不在里面。很长一段时间以来,我都没有一位导师在工作,甚至没有一位可以向我提问的人。。。我真的很想了解我在这里应该做什么的基本原理

我在.Net中编写,使用Jenkins作为我的CI服务器(新的)和msbuild(新的)。我正在听svn:外部(不计算),NuGet


请帮忙

假设我的解决方案名为MySolution并存储在C:\MySolution中,那么我有三个二进制文件目录,所有这些都由源代码管理

  • 供应商第三方框架的源代码。如果需要,它们将被构建和签名(使用我的密钥),并被视为是我自己的代码。有时,这对于“修复”框架中的缺陷或调试其源代码以理解其失败的原因是必要的
  • src\packages由nuget管理的模块(我希望将其与我的“lib”文件夹相结合,但这还不受支持)
  • lib我没有源代码且未由nuget管理的编译库
(我省略了诸如“src”、“sample”、“setup”、“documentation”和“scripts”之类的文件夹,以保留特定于OP的答案)

最近几个月,我开始在lib文件夹中为“packages”创建自己的nuget包,这样我就可以将它们全部迁移到“packages”。它已发布到私有nuget服务器。它还简化了跨解决方案管理二进制文件的过程


我过去经常使用extern,但过了一段时间,它们会造成一场分支噩梦,因为您必须对外部依赖项进行分支并将其固定到。有了nuget,这就不再需要了。

我绝对不会把二进制文件放在源代码管理中。您最好创建自己的nuget存储库,其中包含您喜欢的软件包版本,并使用nuget restore或其他方式“重新水化”依赖项以进行构建。我使用一个名为nuget-update.bat的简单批处理文件,它只查看所有packages.config文件,并获取它找到的任何依赖项。

您似乎在同一主题上发布了一系列问题。我推荐NuGet,因为它变得至关重要,并且被微软大力推广。但是,许多旧库在那里不可用,您可能仍然需要保留一个lib文件夹。我的开源项目#SNMP就是一个很好的例子


我尝试使用尽可能多的NuGet软件包,甚至升级以维护一些依赖项,例如DockPanel Suite。

不确定问题是什么。你想在OSS项目中复制典型的“lib”目录吗?只需在与源(或src)目录相同的级别创建一个lib目录,并将程序集复制到其中。将其签入SVN,以便您的CI可以看到它们。否则,只需使用Nuget,如果您使用Nuget,您不需要“lib”目录,并且您的CI服务器应该“正常工作”,那么我是否需要在我的PC和构建服务器上的同一位置设置本地存储库?例如,我在两台机器上都安装了C:\LocalPackageRepo?当您开始分支并必须维护发布产品的多个版本,每个版本都使用这些程序集的各自版本时,这一建议会带来挑战。我的团队和我使用版本控制系统并打包所有内部依赖项,这对我们来说很好。我们有一个托管在IIS中的包服务器,它可以被我们的开发机器和构建服务器访问。但是在尝试匹配nuget和众多分支之间的版本时遇到了一些挑战。但是,我的一些二进制文件不适用于nuget,因为它依赖于COM和本机代码。我们使用semver进行所有操作,并且有一个构建步骤,可以根据(kill)存储库中的标记自动更新版本。所以,我们对分支没有任何问题。