【发布时间】:2017-03-21 06:19:52
【问题描述】:
问题如下:我的VS2015方案有几个项目,其中A和B。
A 是一个常规项目,其中包含一个程序/服务/代码,可以将某些源文件转换为已编译的资源(其想法是源可人工维护并受源控制,但生成的资源是机器优化的,但不受源代码控制)。
项目 B 包含一个这样的源文件,我希望 A 中的程序将其“编译”到资源文件中,并且只将其放入程序集 B 中(以及正常编译的项目B)。
+-------------------+ +-----------------+
|Project A | |Assembly A |
| | +----------------> | |
| | | |
+-------------------+ +-------+---------+
|
|
+--------------------------------+------+
| |
+-------------------+ +-----------------+
|Project B | | |Assembly B | |
| +----+---+ | +-----v--+
| |src.txt|| +----------------> | |res.txt||
| | || | | ||
| +--------| | +--------|
+-------------------+ +-----------------+
如何在 Visual Studio 2015 中实现?
【问题讨论】:
-
也许在其他程序的所需构建步骤中通过 .bat 文件调用您要运行的程序的 exe?我已经在 .bat 文件中完成了其他命令,所以听起来可能是这样的..
-
@Botonomous 该图的信用转至asciiflow.com。我正在研究 MSBuild 文档,但它虽然很冗长,但还没有给我任何想法。希望这里有人能解释得更清楚。
-
如果您确保 projectA 在 projectB 之前构建,那么您没有理由不能在 B 的构建中使用 A 的输出吗?不过,您的问题非常广泛,您在寻找什么样的回答?我怀疑这只是“是的,在 VS 2015 中是可能的”:P 你试过什么?
-
@stijn 没有尝试太多,因为我什至不知道如何开始。我不知道构建前/构建后步骤的语法,更不知道如何在这样的步骤中从另一个项目运行程序。我想一个简单的例子会有所帮助,比如说,项目 A 知道如何 ROT13 文件,而项目 B 有一个构建步骤,其中一个文件在放入程序集中之前被编码。
-
在一个解决方案中做到这一点有点困难。 A中有多少代码?您可以定义一个inline task in MSBuild 作为预构建目标运行,它将即时编译一些代码并使用您想要的任何输入项(src.txt 等)运行它。输出将是转换文件的列表,您可以通过 output element 将其添加到项目组“EmbeddedResource”中,以将它们作为资源包含在内。
标签: c# visual-studio visual-studio-2015 msbuild