c# – 如何使多个.net项目在构建中只复制一次引用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使多个.net项目在构建中只复制一次引用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1577字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何使多个.net项目在构建中只复制一次引用](/upload/InfoBanner/zyjiaocheng/774/f5a49179f96e440eb684f91b2d610c7d.jpg)
我有一个包含多个MVC和库项目的解决方案,这个解决方案的构建非常慢.
为了提高构建性能,我将所有项目更改为在同一文件夹中输出,并将所有项目引用更改为copy local = false,这使得构建性能几乎提高了90%,从10m到1m30s.
但是,这会产生一个问题,在运行模式下,我的应用程序显示错误,因为输出文件夹中没有引用程序集.
我想知道是否存在一种方法,使解决方案只将引用复制一次到我的输出文件夹.
我尝试了一些东西,比如将目标从packages文件夹复制到输出文件夹,但这不能正常工作,因为在一个包文件夹中可以存在来自许多框架版本的dll.
有什么想法解决这个问题吗?
解决方法:
一个常见的解决方案是将所有项目输出到同一目录,并将所有引用设置为CopyLocal = False,然后有一个额外的项目(或现有的项目,如主应用程序),目标是相同的输出目录,并包含所有项目引用并具有CopyLocal = True.然后,这个项目有效地将所有引用都放在您想要的位置.为了让所有项目都使用相同的输出目录,我建议修改.csproj文件以导入相同的文件,该文件设置OutputPath属性,而不是在每个项目中手动更改它.
或者,由于您提到单个输出目录的主要问题而且CopyLocal设置为True,因此某些文件会被多次复制,您可以修改复制的方式.通常,默认情况下,使用的复制任务将跳过具有匹配时间戳的文件.这是由SkipCopyUnchangedFiles标志控制的,因此您可以强制它为true并查看是否更改了任何内容:
msbuild my.sln /p:SkipCopyUnchangedFiles=True
或者您甚至可以要求它使用硬链接而不是复制,这实际上应该意味着根本不会制作副本:
msbuild my.sln /p:CreateHardLinksForCopyLocalIfPossible=True
或符号链接:
msbuild my.sln /p:CreateSymbolicLinksForCopyLocalIfPossible=True
如果所有其他方法都失败并且文件仍然被复制多次,则可能意味着例如一个项目引用A.dll而另一个项目也引用A.dll但是来自不同的目录或不同的版本等,所以除非你修复它,否则它将被复制两次,无论如何.
内容总结
以上是互联网集市为您收集整理的c# – 如何使多个.net项目在构建中只复制一次引用全部内容,希望文章能够帮你解决c# – 如何使多个.net项目在构建中只复制一次引用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。