azure-devops - 如何使用绝对路径引用文件夹构建 VSTS 项目?
问题描述
我在 TFSWebSite
和中有两个项目Reference
,它们遵循以下结构:
$\
网站:待建的主要项目
参考:具有许多可参考 dll 的存储库。
Website.dll
使用现有的 dll,Reference
但由于多种原因,它们不包含在同一解决方案中,并且可能映射到不遵循 VSTS 结构的不同文件夹。
因此,为了让网站项目在本地编译,Reference
's.dlls Hintpath
atWebsite.csproj
已手动更改为所有开发人员机器通用的特定绝对路径。
现在,我们正在体验 CI/CD,我们对让 VSTS 完成构建/部署的肮脏、乏味工作的假设感到兴奋。问题是,由于 Reference.dll 与 Website 不在同一个项目中,构建最终会缺少必要的库(前面提到的 Reference 文件夹)并且失败。
有没有办法告诉 VSTSGET
Reference
的 dll(此时已编译),将它们复制到Website.csproj
正在构建的目录并让它们用于构建主项目?
我试过的:
第一的:
Get Sources
步骤中的地图网站和参考- 使用
Copy Files
任务,设置Source FOlder
为 $\References 和目标文件夹为$(Agent.BuildDirectory)
- 建造
现在:
- 在主项目中添加了所有引用。
在这两种情况下,都没有找到任何引用,并且
找不到类型或命名空间名称“(namespacehere)”(您是否缺少 using 指令或程序集引用?)
抛出错误。
我一直在搜索 vsts 帮助部分,但似乎找不到任何明显的解决方案。
任何帮助是极大的赞赏。
解决方案
这主要是由于引用的 dll 没有添加到源代码管理(TFVC repo)中。
首先,请确保将参考的 dll 添加到网站项目中。所以项目文件将包含如下引用(ClassLibrary1.dll
作为下面示例中的引用):
<Reference Include="ClassLibrary1">
<HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
然后,您可以使用以下任何选项来使引用的 dll 工作。
选项 1:将引用的 dll 添加到源代码管理中
如果您已将.tfignore
文件添加到 TFVC 存储库中,它将忽略下面的文件和文件夹,**\bin,
因此默认情况下参考 dll 不会签入到 TFVC 存储库。您可以按照以下选项将参考 dll 签入 TFVC 存储库:
排除参考 dll
.tfignore
排除您要在
.tfignore
. 格式为:!**\referencename.dll
比如
!**\ClassLibrary1.dll
。将引用 dll 添加到源代码管理中
在 VS -> 源代码管理资源管理器 -> 将项目添加到文件夹 -> 选择 dll。
签入并仔细检查 dll 是否已添加到 TFVC 存储库中
在 VS 挂起更改窗口中,将显示 dll 和
.tfignore
文件作为 Inculded 更改,签入更改。并仔细检查 dll 是否已添加到 VSTS 网页的 TFVC 存储库中。
选项 2:在构建网站项目之前构建参考项目
如果您不想将dll添加到源代码管理中,您也可以先构建参考解决方案,以便在构建网站项目之前生成参考dll。详情如下:
编辑构建定义 -> 在构建网站项目之前添加 VS 构建任务(指定参考解决方案) -> 保存并排队构建。
注意:对于选项 2,您在相对路径中指定的构建配置应与 VSTS 构建定义中的构建配置一致。
比如我Debug
在相对路径中指定的..\..\ClassLibrary1\ClassLibrary1\bin\Debug\netstandard2.0\ClassLibrary1.dll
。所以在我的 VSTS 构建定义中,构建参考项目的 VS 构建任务,构建配置必须是Debug
.
现在,无论您使用哪个选项,VSTS 构建都不会显示错误消息The type or namespace name '(namespacehere)' could not be found
。
推荐阅读
- java - 如何在 JUnit 5 中测试队列?
- windows - 在 Windows 中,NT Authority/System 能否以另一个用户身份运行 powershell 脚本
- python - 如何在pyside中使用Material Style?
- windows - winAPI ScrollWindow 会影响 GetClientRect() 吗?
- github - 有没有办法在 github README.org (org-mode) 中显示可折叠的内容?
- apache2 - 在 Apache 中计算 mpm_event.conf 值的最佳实践是什么?
- spring-integration - Spring Integration DSL 将一个对象转换为另一个
- javascript - javascript自动验证在php文件中不起作用
- shell - conda env 名称破坏了 oh-my-zsh 格式
- apache-spark - 基于列表标记数据框行