- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
恐怕我可能会问一个非常愚蠢的问题,但我似乎找不到任何可以说明这一点的东西。我通常处理较小的应用程序,但现在正在处理一个较大的应用程序,其中包含基线框架中的多个程序集和产品线域的多个程序集(还有更多)。我想通过配置 MSBuild 来管理构建。我做了很多在线研究(特别是我发现的几篇 MSDN 文章),现在我觉得知识渊博,足以危险。
据我了解,在 csharp 中,可以卸载 *.csproj 文件并使用属性、项目和目标对其进行修改,以控制构建过程。我也明白我可以导入我自己的目标文件来帮助分离和组织。尽管在这个链接中(https://msdn.microsoft.com/en-us/magazine/dd483291.aspx),一个多级项目构建是用节点级 dirs.proj 文件组织的。这让我感到困惑,并提出了几个我似乎无法找到答案的问题:
无论如何,我已经看到 dirs.proj 在几个论坛中提到了有关问题,但是我在哪里可以找到它是如何在 VS 中加载或使用的(在手动命令提示符构建之外,如果它用于组织构建似乎不合理但构建不会真正花费大量时间)。我希望有人可以帮助我实现这个惊喜时刻。
提前致谢。
最佳答案
Dirs.proj 是一种 MSBuild 约定,通常在处理非常大的源代码树(超过 20 个项目)时使用。我曾在前一家公司与 Microsoft 工程师一起工作,dirs.proj 约定似乎是 Microsoft 开发并在内部使用的约定,用于管理非常大的源代码树。
一个很好的实现引用是 Python Tools for Visual Studio CodePlex GitHub 上的项目。
link you shared by Sayed Ibrahim Sashimi很好地解释了 msbuild 范式背后的推理,但它并没有很好地展示其工作原理的实际示例。 Python 工具项目是这方面的杰出引用。
使用此范例背后的想法很简单。我敢打赌,大多数 .NET 软件工程师都从事规模有限的项目,一次处理的项目不超过 5-10 个,他们通过解决方案 (.sln) 文件在 Visual Studio 中管理这些项目.他们甚至可以指示他们的构建系统在 .sln 上运行构建。在您开始考虑将产品扩展到更大的产品或将其与更大的产品(例如具有许多项目的平台)结合之前,这会很好用。解决方案文件不是 MSBuild 文件,因此它们不像 MSBuild 那样可扩展,并且在处理大量项目时会遭受巨大的性能损失。
从 MSBuild 的角度来看,dirs.proj 代表 Visual Studio .sln 文件。然而,不同之处在于 dirs.proj 不像 .sln 那样只包含 .csproj(等),而是它们可以包含源子树(例如其他嵌套的 dirs.proj)。因此,构建根 dirs.proj 可以构建整个源代码树,或者构建嵌套的 dirs.proj 将构建该子树。
因此,该范式鼓励您将来源视为一系列组织成功能或产品领域的相互依赖的节点。这样,工程师可以在非常大的项目中处理不同的源代码子树,而不必像使用 VS 解决方案那样处理整个源代码树。
使用此范例还具有 .sln 文件所没有的某些好处。例如,如果一个项目从另一个单独的子树中引用一个项目,则 msbuild 将首先自动构建该引用。此外,您的源节点可以携带自己的build设置,允许根据构建场景使用不同的build设置动态构建它们。例如,在一种情况下,SharePoint 源子树需要 WSP 打包,需要在没有 .pdb 的情况下构建 C# 子树,DB 子树需要生成 dacpac,整个源树需要使用 myCorp.snk 对其程序集进行签名并设置构建输出到 $(buildRoot)\Output 目录。
dirs.proj 不是通过 visual studio 打开的——它们是使用 msbuild 在命令行上构建的。唯一的痛点是文件必须手工整理。
所以,长话短说,看看 Python Tools 项目,看看他们是如何使用 dirs.proj 的。请注意整个源代码树如何具有由 Common.Build.settings 管理的通用设置,以及如何在各种 .csproj 文件中使用此 .settings 文件中的 msbuild 属性。
关于c# - dirs.proj 是如何使用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28832703/
这个问题在这里已经有了答案: What's the difference between html[lang="en"] and html:lang(en) in CSS? (4 个答案) 关闭 6
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
来自 ./configure --help: --with-zlib=DIR Include ZLIB support (requires zlib >= 1.0.9) --with-zlib-
我正在尝试检查我的 pod 规范并收到以下错误。 [!]“Classes”存储库中的“Classes”Pod 遇到意外版本目录“ios”。 我的源文件夹设置如下: 类 - iOS - 操作系统 Pod
在 Python 中有一个名为 dir 的内置函数。这用于获取对象所有属性的列表。 我了解它的作用,但我对为什么将其称为 dir 感到困惑。这个名称与从对象中获取属性有什么关系? 最佳答案 IIRC
我正在使用以下方法遍历文件夹: Dim file As Variant file = Dir(myFolder) While (file <> "" ) mySub file '
在 Python 的交互式 shell 中,执行 dir() 会打印一个名称列表。但是在脚本中 dir() 不直接提供任何输出,我必须使用 print(dir())。 不仅仅是dir(),其他内置函数
我明白它的作用,并且一直在使用它。但有趣的是,我还没有找到说明“DIR”的实际含义 的文档。 “目录”似乎不对。 这不是“console.log() 和 console.dir() 之间有什么区别?”
我正在尝试使用字符向量在我的工作目录中创建一系列目录。没有递归,只是迭代。没有什么花哨。例如,我可以很容易地做到这一点: lapply(state.name, dir.create) 它在我的工作目录
dir(x) 和 dir(x.__class__) 有什么区别?后者返回不同的属性列表,但与前者重叠。 例如,SQLAlchemy 的 sqlalchemy.create_engine() 函数创建一
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
我正在尝试使用 Dir[] 和/或使用 Dir.foreach 对目录进行 glob: files = Dir["#{options[:dir]}/**/*"].reject { |file| Fil
Git 存储库中.gitignore 文件中的/dir 和/dir/ 有区别吗? 以下有何不同? /dir /dir/ /dir/* 最佳答案 是的,这些规则是不同的。 /dir 将匹配文件、目录、链
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
我正在尝试编译Bootstrap 5.3以及定制的sass文件。。这就是我的东西。奇怪的是,最后一节生成了下面的css。我预计会看到下面的css。它在开头添加了[dir]。为什么要添加[dir]?我怎
你可以找到各种文档来指定 XML 文档内容的语言,使用 xml:lang,如下所示: ... HTML 和 XHTML 具有 dir 属性,可让您指定文本在默认情况下应被视为从左到右,还是默认从右到左
当我 echo 时,输出似乎相同编辑它。 我还测试了其他命令,例如 open ,但两者的结果是一样的。 最佳答案 在传统 sh -style 模式匹配,*匹配文件名中的零个或多个字符,因此 * 之间没
我想在不同时间将一个目录复制到另一个目录中。每次,我都希望新名称比以前高一个数字/我希望能够获取该数字并将其存储到变量中。 所以如果我有一个: mymaindir /home/user/dirs/ST
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是一名优秀的程序员,十分优秀!