我发现,如果你在所有地方都不启用“复制本地”选项,那么具有多个项目的C#解决方案的构建时间会大大缩短。我进行了一些测试,似乎(至少对于我们的解决方案)只需删除“Copy local”即可将构建时间提高2-3倍。这可能意味着我们必须将库存储在某个公共目录中。
有什么建议/最佳实践可以实现这一点吗?请注意,我希望保留对项目的引用,而不是对DLL的引用。
有什么建议/最佳实践可以实现这一点吗?请注意,我希望保留对项目的引用,而不是对DLL的引用。
如果你的应用程序分布在多个解决方案中,我建议构建到..\..\Build目录下。(如果你只有一个解决方案,可以考虑..\Build目录。)Visual Studio默认会在输出文件夹中获取引用文件。然而,当使用MSBuild在没有Visual Studio的情况下进行构建时,你必须将构建文件夹添加为引用路径,如下面的示例所示:
<Target Name="BuildApp">
<MSBuild
Projects="@(ProjectReference)"
Targets="Rebuild"
Properties="ReferencePath=..\..\Build;$(LibraryFolder)" >
</MSBuild>
<OnError ExecuteTargets="BuildFailed" />
</Target>
这个例子也提出了我的第二个论点。我认为你不应该将你的生成文件夹作为库文件夹,因为这可能会导致个别项目错误地覆盖库程序集,例如通过使用复制本地文件。你应该严格控制你的库版本,所以我建议你保持分离。(开发人员需要在VS中添加此路径作为引用路径。)
你还可以选择将..\..\Build分成..\..\Release和..\..\Debug,就像由ShuggyCoUk建议的那样。
我喜欢在基于Unix的系统中常见的顶级Bin Lib文件夹设置,顺便说一句,转移到这种类型的系统也会使您的发布工程师的工作更加轻松。只需从一个文件夹中提取所有内容,就可以大大简化安装程序的创建。Dll文件将放在bin中。