有没有办法将 MSBuild 输出目录更改为自定义项目名称?

Is there a way to change MSBuild output directory to a custom project name?

我正在尝试将我的打字稿代码编译成 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

I am using .targets files, and I have already tried using gulp and tsconfig, but with no luck.

不熟悉如何让它在 tsconfig 中工作。但是您似乎正在使用 msbuild 和 targets 文件来构建该项目,您可以编辑项目文件以自定义您的构建过程。

因为我们可以在 .njsprj(Node.js 的项目文件)、.csproj(普通 C# 项目的项目文件)或 xx.targets 中指定 custom target file.You可以使用下面的脚本将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 to customize your build, copy task, delete task, move task... 这些路径可以用 $(ProjectDir)$(SolutionDir) 等宏替换...如果您在路径 C:\ProjectMain\Project1\$(ProjectDir)\ts 中有项目文件 < => C:\ProjectMain\Project1\ts.

构建顺序: tsc.exe compile xx.ts 到 xx.js => custom build target