我们在CI服务器上使用MSBuild来编译我们的WebApp,但是构建忽略了TypeScript从构建的输出构建的JavaScript文件。
我希望输出包含JavaScript而不是Typescript,但是在预期位置的输出中都没有。
如何在我的解决方案中包含JavaScript文件而不必将它们全部包含在内? TypeScript团队似乎认为这很糟糕,但我不想在我的解决方案中复制所有文件。
答案 0 :(得分:6)
问题是由于在构建服务器上使用MSBuild而不是“Publish”。我向内容添加了一个AfterBuild目标,包括构建输出的所有JS文件。
<Target Name="AfterBuild">
<ItemGroup>
<Content Include="**\*.js" />
</ItemGroup>
</Target>
虽然这不太理想,但它允许在使用visual studio时,js文件不会在解决方案中显示,文件最终会在构建输出中显示。
答案 1 :(得分:5)
我尝试了很多来自网络的解决方案,包括<Content Include="**\*.js" />
,但没有任何效果。我在我的本地开发框中使用了MSBuild,并在C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript
中安装了打字稿和目标。
事实证明我的老了&#34;用于Web应用程序csproj文件的MSBuild运行器已过时。我这样做了:
MSBuild.exe my.csproj /Target:ResolveReferences;_CopyWebApplication /property:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug
但感谢this post我需要使用UseWPP_CopyWebApplication
代替遗产_CopyWebApplication
:
MSBuild.exe /t:Rebuild "/p:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False" my.csproj
现在没有编辑csproj文件,我的所有TypeScript都包含在内!
答案 2 :(得分:0)
可能未在构建服务器上安装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>
请务必将其放在最后一个<Import />
元素之后。现在,当您在构建服务器上查看构建的输出时,您应该在某处看到“VisualStudioVersion: xx ”。
将TypeScript
文件夹复制到构建服务器上的正确版本文件夹。
答案 3 :(得分:0)
只是添加它以防止人们。
我们最近有这个问题,并通过添加修复
/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