我希望输出包含JavaScript而不是TypeScript,但是在预期位置的输出中都没有出现。
如何在不必将所有JavaScript文件都放入解决方案的情况下包含JavaScript文件?TypeScript团队似乎认为这样做不好,但我也不想在解决方案中有所有文件的副本。
<Target Name="AfterBuild">
<ItemGroup>
<Content Include="**\*.js" />
</ItemGroup>
</Target>
我尝试了网上许多解决方案,包括<Content Include="**\*.js" />
,但没有任何作用。我在本地开发环境中使用MSBuild,并且已经安装了TypeScript并将其目标设置为C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript
。
事实证明,我的“旧”MSBuild运行Web应用程序csproj文件的方式已经过时。我之前是这样做的:
MSBuild.exe my.csproj /Target:ResolveReferences;_CopyWebApplication /property:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug
但幸运的是,由于这篇文章,我需要使用UseWPP_CopyWebApplication
代替旧版的_CopyWebApplication
:
MSBuild.exe /t:Rebuild "/p:WebProjectOutputDir=myfolder;OutDir=myfolder\bin;Configuration=Debug;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False" my.csproj
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
文件夹复制到构建服务器上正确的版本文件夹中。
仅供参考,可能有所帮助。
最近我们遇到了这个问题,并通过添加以下命令到 BAT 文件中修复了它:
/p:VisualStudioVersion=12.0
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe FullBuild.proj /p:VisualStudioVersion=12.0 /t:createRelease /p:ReleaseNumber=5.22.0