Mis*_*sza 5 c# msbuild visual-studio visual-studio-2015
问题如下:我的VS2015解决方案有几个项目,其中包括A和B.
A是一个常规项目,包含一个程序/服务/代码,可以将某些源文件转换为已编译的资源(其思想是源是人类可维护的并且在源代码控制之下,但结果资源是机器优化的但不是源代码控制).
项目B包含一个这样的源文件,而不是逐字逐句地放在项目B的结果程序集中,我希望A中的程序将其"编译"到资源文件中,并且只将它放在程序集B中(以及项目B中的其他代码)正常编译).
+-------------------+ +-----------------+
|Project A | |Assembly A |
| | +----------------> | |
| | | |
+-------------------+ +-------+---------+
|
|
+--------------------------------+------+
| |
+-------------------+ +-----------------+
|Project B | | |Assembly B | |
| +----+---+ | +-----v--+
| |src.txt|| +----------------> | |res.txt||
| | || | | ||
| +--------| | +--------|
+-------------------+ +-----------------+
Run Code Online (Sandbox Code Playgroud)
如何在Visual Studio 2015中执行此操作?
基本原理很简单,可以这样实现:确保 A 在 B 之前构建,然后使用 A.exe 作为 B 中的预构建步骤。
要获得正确的构建顺序:在 VS 中打开包含两个项目的 .sln,右键单击项目 B,选择“构建依赖项 -> 项目依赖项...”并使项目 B 依赖于项目 A。在构建顺序选项卡中验证 A 将在 B 之前构建。
现在在文本编辑器中打开projectB,一直滚动到末尾并在</Project>结束标记之前添加类似以下内容:
<Target Name="GenerateSomeFile" BeforeTargets="Build">
<PropertyGroup>
<SourceFile>$(MsBuildThisFileDirectory)\in.cs</SourceFile>
<TargetFile>$(MsBuildThisFileDirectory)\out.cs</TargetFile>
</PropertyGroup>
<Exec Command="/path/to/projectAOutputDir/A.exe $(SourceFile) $(TargetFile)"
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |