MSBuild输出缺少由Typescript编译的javascript文件

MSBuild输出缺少由Typescript编译的javascript文件,msbuild,typescript,Msbuild,Typescript,我们在CI服务器上使用MSBuild编译我们的WebApp,但是该构建从构建的输出中忽略了由TypeScript构建的JavaScript文件 我希望输出中包含JavaScript,而不是Typescript,但是它们都不在输出中的预期位置 如何在解决方案中包含JavaScript文件而不必全部包含?TypeScript团队似乎认为这很糟糕,但我也不希望在我的解决方案中有重复的所有文件。您的构建服务器上可能没有安装TypeScript。要安装它,请将TypeScript文件夹从c:\Progra

我们在CI服务器上使用MSBuild编译我们的WebApp,但是该构建从构建的输出中忽略了由TypeScript构建的JavaScript文件

我希望输出中包含JavaScript,而不是Typescript,但是它们都不在输出中的预期位置


如何在解决方案中包含JavaScript文件而不必全部包含?TypeScript团队似乎认为这很糟糕,但我也不希望在我的解决方案中有重复的所有文件。

您的构建服务器上可能没有安装TypeScript。要安装它,请将TypeScript文件夹从
c:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v12.0\
复制到生成服务器上的同一文件夹中(其中
v12
是Visual Studio的版本)

但是,生成服务器上的Visual Studio版本可能会有所不同。在我的情况下,我的开发机器上的版本是
v12
,而构建服务器使用
v11
。我通过将以下内容添加到
[WebProjectName].csproj
文件中发现了这一点:

<Target Name="PrintVisualStudioInfo">
    <Message Text="VisualStudioVersion: '$(VisualStudioVersion)'" Importance="High" />
</Target>
<PropertyGroup>
    <CompileDependsOn>
        PrintVisualStudioInfo;
        $(CompileDependsOn)
    </CompileDependsOn>
</PropertyGroup>

PrintVisualStudioInfo;
$(已编译的Pendson)
确保将其放在最后一个
元素之后。现在,当您在构建服务器上查看构建的输出时,应该会在某处看到“VisualStudioVersion:xx”


TypeScript
文件夹复制到生成服务器上的正确版本文件夹。

问题是由于在生成服务器上使用MSBuild而不是“Publish”。我在内容中添加了一个后构建目标,将所有JS文件都包含到构建输出中

<Target Name="AfterBuild">
   <ItemGroup>
      <Content Include="**\*.js" />
   </ItemGroup>
</Target>


虽然这并不理想,但它允许在使用visual studio时js文件不会显示在解决方案中,并且文件最终会显示在生成输出中。

我尝试了许多来自web的解决方案,包括
,但没有任何效果。我正在本地开发设备上使用MSBuild,typescript已安装,目标位于
C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v12.0\typescript

<Target Name="AfterBuild">
   <ItemGroup>
      <Content Include="**\*.js" />
   </ItemGroup>
</Target>
事实证明,我的web应用程序csproj文件的“旧”MSBuild运行程序已过时。我是这样做的:

MSBuild.exe my.csproj /Target:ResolveReferences;_CopyWebApplication /property:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug 
但由于我需要使用
UseWPP\u CopyWebApplication
而不是传统的
\u CopyWebApplication

MSBuild.exe /t:Rebuild "/p:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False" my.csproj

现在不需要对csproj文件进行任何编辑,我的所有打字脚本都包括在内了

只需添加,以防帮助他人。
我们最近遇到了这个问题,通过添加
/p:VisualStudioVersion=12.0
到BAT文件:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe FullBuild.proj /p:VisualStudioVersion=12.0 /t:createRelease /p:ReleaseNumber=5.22.0

嗨@Gent,我想知道你是否能让它工作?如果您对此仍有问题,请告诉我。@MrMathos我找到了答案,但是typescript安装在生成服务器上,因此它最终是一个不同于您答案中详细说明的问题。谢谢你的时间和帮助。没问题,很高兴你找到了!让我问你-当你添加这个时,它实际上会将文件放在目标服务器上?我也遇到过类似的情况,我的整个交易都是在本地发布的,但当我在实际的构建服务器上通过排队构建运行相同的.csproj安装程序时,它不起作用。是的,它通过jenkins上的msbuild和octopus deploy也起作用,只要它添加到csproj本身,这就太奇怪了,为什么不将文件复制到目标服务器?它不会将它们放在_publishedwebsites文件夹中,也不会放在目标服务器本身中。我基本上只是用了你上面的东西。还有什么吗?您是否验证了js文件在构建后是否存在?例如,如果你有“Scripts/SomeLibrary.ts”,你会发现一个“Scripts/SomeLibrary.js”,谢谢!这应该被标记为答案。您链接到的答案经过调查,发现问题的根源在于Microsoft在其发布任务目标文件中的错误决策。