有没有一种方法可以将MSBuild输出目录更改为自定义项目名称?

时间:2019-10-17 14:38:32

标签: javascript typescript visual-studio msbuild tsconfig

我正在尝试将我的打字稿代码编译成javascript。 我想将其与另一个项目合并,但是由于我的主项目是另一个名称,因此除非我找到一种方法来完全不使用项目名称输出文件,或者更改编译后的输出项目名称,否则无法合并它。我也对不同的项目有很多依赖性,这些项目的名称不能更改。我想知道是否可以更改csproj文件本身中的名称,或者使用目标来更改输出dir项目名称。

我正在使用.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

  

1 个答案:

答案 0 :(得分:1)

  

我正在使用.targets文件,并且我已经尝试使用gulp和   tsconfig,但没有运气。

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

由于我们可以在.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 taskdelete task,  move task ...这些路径可以用$(ProjectDir)$(SolutionDir) ...之类的宏替换。如果路径C:\ProjectMain\Project1\中的项目文件是$(ProjectDir)\ts < => C:\ProjectMain\Project1\ts

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

enter image description here