我可能不完全理解关于范围界定的wiki 文章,如果这听起来很愚蠢,请原谅我。
简介:
我有一个包含 40 多个项目的解决方案 (ABC.sln),并且正在尝试实施 OpenWrap 以进行包管理。因此,我在解决方案的根文件夹中执行了以下操作:
o init-wrap -all
效果很好:我现在在解决方案的根文件夹中有一个名为 SLN.wrapdesc 的文件。子文件夹中的所有 .csproj 文件都包含 OpenWrap 目标行。
然后我继续将不同的包装添加到解决方案中:
o add-wrap -Name xxx
同样,这很好用:我在 wraps 文件夹中有一些包装,并且在从项目中删除旧引用后构建不会中断。
问题:
包装的所有内容都将用于所有项目,即使对于那些不需要它的项目。我希望能够指定哪些包装去哪里,例如 AjaxControlToolkit 只进入 web 项目。
我尝试
了什么
首先,我从 wrapdesc 中删除了 AjaxControlToolkit:
o remove-wrap AjaxControlToolkit
这会导致构建中断(如预期的那样)。然后我尝试了以下方法:
1.尝试使用范围添加回绕:
o add-wrap -Name AjaxControlToolkit -scope webproject
这只是将 wrap 放回 wraps 文件夹中。然后我添加<OpenWrap-Scope>customscope</OpenWrap-Scope>
到项目文件中,但构建仍然中断。
2. 尝试手动将名为 ABC.webproject.wrapdesc 的文件添加到根文件夹。当我尝试打开解决方案时,这会导致以下错误:
The "exists" function only accepts a scalar value, but its argument "@(_WrapFile->'%(FullPath)')" evaluates to "D:\Projects\ABC.webproject.wrapdesc;D:\Projects\ABC.wrapdesc" which is not a scalar value.
我猜它不喜欢 2 个 wrapdesc 文件。这很奇怪,因为 wiki 说“……您可以在默认描述符旁边添加第二个描述符……”
所以现在我被困住了。有人有想法么?