【问题标题】:Is there a way to change MSBuild output directory to a custom project name?有没有办法将 MSBuild 输出目录更改为自定义项目名称?
【发布时间】:2019-10-17 14:38:32
【问题描述】:
我正在尝试将我的打字稿代码编译成 javascript。
我想将它与另一个项目合并,但由于我的主项目是不同的名称,除非我找到一种方法来输出我的文件而完全没有项目名称,或者更改已编译的输出项目名称,否则我无法合并它。我对不同项目也有许多依赖项,项目名称无法更改。我想知道是否可以更改 csproj 文件本身中的名称,或者使用目标来更改输出目录项目名称。
我正在使用 .targets 文件,并且我已经尝试过使用 gulp 和 tsconfig,但没有成功。
文件:
C:\ProjectMain\Project1\ts
helloWorld.ts
C:\ProjectMain\Project1\js
>
当前输出:
C:\ProjectMain\Project1\js\Project1
helloWorld.js
想要的输出:
C:\ProjectMain\Project1\js\Project2
helloWorld.js
【问题讨论】:
标签:
javascript
typescript
visual-studio
msbuild
tsconfig
【解决方案1】:
我正在使用 .targets 文件,并且我已经尝试过使用 gulp 和
tsconfig,但没有运气。
不熟悉如何让它在 tsconfig 中工作。但是您似乎正在使用 msbuild 和目标文件来构建该项目,您可以编辑项目文件以自定义您的构建过程。
由于我们可以在.njsprj(Node.js的项目文件)、.csproj(普通C#项目的项目文件)或xx.targets文件中指定custom target。您可以使用下面的脚本来复制内容从C:\ProjectMain\Project1\js\Project1 到C:\ProjectMain\Project1\js\Project2。
<Project...>
...
<Target Name="CustomPostBuild" AfterTargets="build">
<ItemGroup>
<!--Specify which files we will move-->
<FilesToMove Include="C:\ProjectMain\Project1\js\Project1\*.*"/>
</ItemGroup>
<MakeDir Directories="C:\ProjectMain\Project1\js\Project2" />
<Move SourceFiles="@(FilesToMove)" DestinationFolder="C:\ProjectMain\Project1\js\Project2"/>
</Target>
</Project>
您可以使用msbuild tasks 自定义您的构建,copy task,delete task,
move task... 这些路径可以替换为$(ProjectDir),$(SolutionDir)...等宏
构建顺序: tsc.exe compile xx.ts 到 xx.js => custom build target