huw*_*ies 8 msbuild typescript tsc
升级到Typescript 2.7.2(从2.4)后,我在构建服务器上收到以下错误:
packages\Microsoft.TypeScript.MSBuild.2.7.2\tools\Microsoft.TypeScript.targets(378,7):错误MSB4064:"VsTsc"任务不支持"ComputeInputAndOutputOnly"参数.验证该任务上是否存在该参数,它是一个可设置的公共实例属性.
该项目将Microsoft.TypeScript.MSBuild作为包依赖项引入.Packages.config包括:
<package id="Microsoft.TypeScript.Compiler" version="2.7.2" targetFramework="net462" developmentDependency="true" />
<package id="Microsoft.TypeScript.MSBuild" version="2.7.2" targetFramework="net462" developmentDependency="true" />
Run Code Online (Sandbox Code Playgroud)
使用打包的编译器比在服务器上安装Typescript更好(就像在本地机器上一样),因为我们有很多构建服务器,并且只要项目需要较新版本的typescript就能保持最新状态是不切实际的.
深入了解packages文件夹中的Microsoft.TypeScript.targets,我可以看到使用了违规参数:
<Target Name="CompileTypeScriptWithTSConfig"
Condition="'$(BuildingProject)' != 'false' AND '@(ConfigFiles)' != '' AND '$(DesignTimeBuild)' != 'true'"
DependsOnTargets="$(CompileTypeScriptDependsOn)"
BeforeTargets="$(CompileTypeScriptBeforeTargets)"
AfterTargets="$(CompileTypeScriptAfterTargets)"
Inputs="@(TypeScriptInputFiles)" Outputs="@(GeneratedJavascript)">
<!--For some reason, ItemGroup operations are occurring even when the target is skipped-->
<!--So we use the CompileRan property to ensure the ItemGroup operations only run when it isn't skipped-->
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="CompileRan" />
</CreateProperty>
<ItemGroup>
<emittedFiles Remove="@(emittedFiles)" Condition="'$(CompileRan)' == 'true'" />
<GeneratedJavascript Remove="@(GeneratedJavascript)" Condition="'$(CompileRan)' == 'true'" />
</ItemGroup>
<VsTsc
ToolPath="$(TscToolPath)"
ToolExe="$(TscToolExe)"
IsFileSystemCaseSensitive="$(IsFileSystemCaseSensitive)"
TSJavaScriptFile="$(TSJavaScriptFile)"
PreferredUILang="$(PreferredUILang)"
TSConfigFile="%(TSConfigFilesWithOutputLogs.Identity)"
YieldDuringToolExecution="$(TscYieldDuringToolExecution)"
ProjectDir="$(TypeScriptProjectDir)"
ToolsVersion="$(TypeScriptEffectiveToolsVersion)"
TypeScriptCompileBlocked="$(TypeScriptCompileBlocked)"
ComputeInputAndOutputOnly="false"
OutputLogFile="%(TSConfigFilesWithOutputLogs.OutputLog)"
OutputLogDirectory="$(TSCompilerOutputLogDirectory)">
<Output TaskParameter="GeneratedJavascript" ItemName="emittedFiles" />
</VsTsc>
<ItemGroup>
<GeneratedJavascript Include="@(emittedFiles)" KeepDuplicates="false" Condition="'$(CompileRan)' == 'true'" />
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
这可能是由于服务器上的旧版MSBuild造成的吗?服务器下载Microsoft.TypeScript.MSBuild包作为构建过程的一部分,因此我无法修改包中的目标文件.任何帮助或工作都将非常感激.谢谢!
我遇到了同样的问题,需要超越我的项目时间表,所以我现在评论了这些代码行,将寻找更令人愉快的解决方案
ComputeInputAndOutputOnly="true"
OutputLogDirectory="$(TSCompilerOutputLogDirectory)">
<Output TaskParameter="FullPathsToFiles" ItemName="TypeScriptInputFiles" />
Run Code Online (Sandbox Code Playgroud)
希望有更好的解决方案
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |