2013-06-19 23 views

回答

7

我开始从我们的来源获取2个文件,我可以单独使用。

一个是定义文件(* .d.ts),另一个是定义文件中接口实现的普通文件。定义文件给出了上述错误。

然后我开始从定义文件中删除代码块,直到错误消失,我可以编译它。

这表明我在该文件的注释中存在问题,因为当我添加/删除某些注释时问题出现/消失。

我开始尝试评论的位置和内容,发现评论是在线还是在自己的线上都没有什么不同。但是使用非ASCII字符的注释确实会导致问题!

有了这些信息,我进入了Typescript codeplex页面来报告bug,发现有人已经有了。

Cannot handle non-ASCII Unicode characters

因此,解决办法,现在,是你的代码中不使用Unicode字符。

因此,现在的解决方案是使用Unicode编码重新保存文件。

TypeScript 0.9 - Could not find file

+4

的解决方法是将文件保存为UTF-8,而不是ANSI,而不是从文件中删除Unicode字符。 –

+0

也适用,谢谢你的建议。谨慎地把它作为一个正确的答案,而不是一个评论,所以我可以接受它?那么我想最后的解决方案是VS扩展应该以unicode编码文件开始? – AndyJ

+0

您也可以通过关于这个问题的新问题的答案。 – AndyJ

2

我也遇到了这个问题,但是,它没有什么做编码。

如果你有Visual Studio中的TypeScriptCompile生成操作太多的文件,并且您正在使用自定义命令行Exec在您的csproj BeforeBuildAfterBuild,您可能会看到相同的“无法解析引用的文件”的错误。

如果文件太多或路径较长的文件(myproj/scripts/reallylongfoldername/reallylongilename.ts)很多,它们不能全部适合命令行参数。仔细看看错误。对我来说,简单地增加一个新的file.ts对项目造成的错误:

无法解析引用的文件:C:\路径\为\项目\脚本\ file.s

这不是一个错字以上。编译器实际上从“file.ts”中删除了“t”以使其适合命令行,并且由于文件“file.s”不存在,我得到了该错误。

解决方案是添加一个自定义构建目标。在安装Visual Studio 2013之后,我只遇到了这个问题,因为它希望所有定义文件都有一个TypeScriptCompile Build Action。所以我只是复制下我的解决办法这2个文件到一个build文件夹:

SolutionFolder \建立\ Microsoft.TypeScript.Default.props

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <TypeScriptRemoveComments>false</TypeScriptRemoveComments> 
    <TypeScriptNoImplicitAny>false</TypeScriptNoImplicitAny> 
    <TypeScriptNoResolve>false</TypeScriptNoResolve> 
    <TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations> 
    <TypeScriptModuleKind>amd</TypeScriptModuleKind> 
    <TypeScriptOutFile></TypeScriptOutFile> 
    <TypeScriptOutDir></TypeScriptOutDir> 
    <TypeScriptSourceMap>true</TypeScriptSourceMap> 
    <TypeScriptMapRoot></TypeScriptMapRoot> 
    <TypeScriptSourceRoot></TypeScriptSourceRoot> 
    <TypeScriptTarget>ES5</TypeScriptTarget> 
    <TypeScriptAdditionalFlags></TypeScriptAdditionalFlags> 
    <TypeScriptEnableCompileOnSave>true</TypeScriptEnableCompileOnSave> 
    </PropertyGroup> 
</Project> 

SolutionFolder \建立\ Microsoft.TypeScript.targets

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
    <VsToolsPath Condition="'$(VsToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VsToolsPath> 
    </PropertyGroup> 

    <UsingTask TaskName="TypeScript.Tasks.VsTsc" AssemblyFile="$(VSToolsPath)\TypeScript\TypeScript.tasks.dll" /> 

    <PropertyGroup> 
    <CompileDependsOn> 
     CompileTypeScript; 
     $(CompileDependsOn); 
    </CompileDependsOn> 
    </PropertyGroup> 

    <PropertyGroup> 
    <PublishPipelineCollectFilesCore> 
     $(PublishPipelineCollectFilesCore); 
     TypeScriptCollectPublishFiles; 
    </PublishPipelineCollectFilesCore> 
    </PropertyGroup> 

    <PropertyGroup Condition="'$(TypeScriptBuildConfigurations)' == ''"> 
    <TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false'">true</TypeScriptCompileOnSaveEnabled> 
    <PreferredUILang Condition="'$(BuildingInsideVisualStudio)' == 'true' and '$(PreferredUILang)' == ''">$([System.Globalization.CultureInfo]::CurrentUICulture.Name)</PreferredUILang> 

    <TypeScriptBuildConfigurations Condition="'$(TypeScriptRemoveComments)' == 'true'">$(TypeScriptBuildConfigurations) --removeComments</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptNoImplicitAny)' == 'true'">$(TypeScriptBuildConfigurations) --noImplicitAny</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptNoResolve)' == 'true'">$(TypeScriptBuildConfigurations) --noResolve</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptGeneratesDeclarations)' == 'true'">$(TypeScriptBuildConfigurations) --declaration</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptModuleKind)' != ''">$(TypeScriptBuildConfigurations) --module $(TypeScriptModuleKind)</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptOutFile)' != ''">$(TypeScriptBuildConfigurations) --out &quot;$(TypeScriptOutFile)&quot;</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptOutDir)' != ''">$(TypeScriptBuildConfigurations) --outDir &quot;$(TypeScriptOutDir)&quot;</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptSourceMap)' == 'true'">$(TypeScriptBuildConfigurations) --sourcemap</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptTarget)' != ''">$(TypeScriptBuildConfigurations) --target $(TypeScriptTarget)</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptNoResolve)' == 'true'">$(TypeScriptBuildConfigurations) --noResolve</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptAdditionalFlags)' != ''">$(TypeScriptBuildConfigurations) $(TypeScriptAdditionalFlags)</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptMapRoot)' != ''">$(TypeScriptBuildConfigurations) --mapRoot &quot;$(TypeScriptMapRoot)&quot;</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptSourceRoot)' != ''">$(TypeScriptBuildConfigurations) --sourceRoot &quot;$(TypeScriptSourceRoot)&quot;</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(TypeScriptCodePage)' != ''">$(TypeScriptBuildConfigurations) --codepage $(TypeScriptCodePage)</TypeScriptBuildConfigurations> 
    <TypeScriptBuildConfigurations Condition="'$(PreferredUILang)' != ''">$(TypeScriptBuildConfigurations) --locale $(PreferredUILang)</TypeScriptBuildConfigurations> 
    </PropertyGroup> 

    <PropertyGroup> 
    <TscToolPath Condition="'$(TscToolPath)' == ''">$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript</TscToolPath> 
    <TscToolExe Condition="'$(TscToolExe)' == ''">tsc.exe</TscToolExe> 
    <TscYieldDuringToolExecution Condition="'$(TscYieldDuringToolExecution)' == ''">true</TscYieldDuringToolExecution> 
    </PropertyGroup> 

    <ItemGroup> 
    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)\$(LangName)\TypeScriptProjectProperties.xaml;"> 
     <Context>Project;BrowseObject</Context> 
    </PropertyPageSchema> 
    </ItemGroup> 

    <ItemGroup> 
    <ProjectCapability Include="TypeScript" /> 
    </ItemGroup> 

    <Target Name="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'"> 
    <VsTsc 
     ToolPath="$(TscToolPath)" 
     ToolExe="$(TscToolExe)" 
     Configurations="$(TypeScriptBuildConfigurations)" 
     FullPathsToFiles="@(TypeScriptCompile)" 
     YieldDuringToolExecution="$(TscYieldDuringToolExecution)" 
     OutFile="$(TypeScriptOutFile)" 
     OutDir="$(TypeScriptOutDir)" 
     > 
     <Output TaskParameter="GeneratedJavascript" ItemName="GeneratedJavascript" /> 
    </VsTsc> 
    </Target> 

    <Target Name="TypeScriptCollectPublishFiles"> 
    <Message Text="Adding to FilesForPackagingFromProject: @(GeneratedJavascript->'%(Identity)')"/> 
    <ItemGroup> 
     <FilesForPackagingFromProject Include="@(GeneratedJavascript->'%(Identity)')"/> 
    </ItemGroup> 
    </Target> 

</Project> 

然后,我修改了包含所有这些打字稿文件的项目的csproj文件。在<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />行之前把下面的权利(接近文件的顶部):

<Import Project="..\Build\Microsoft.TypeScript.Default.props" /> 

然后把下面右边的<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />行之后(靠近文件底部):

<Import Project="..\Build\Microsoft.TypeScript.targets" /> 

这将在VS 2012和2013中都创建打字稿。如果具有用于构建ts的特殊打印配置,还可以为每个导入添加条件子句:

<Import Project="..\Build\Microsoft.TypeScript.Default.props" Condition="'$(Configuration)' == 'DebugBuildTs' Or '$(Configuration)' == 'Release'" /> 
<Import Project="..\Build\Microsoft.TypeScript.targets" Condition="'$(Configuration)' == 'DebugBuildTs' Or '$(Configuration)' == 'Release'" /> 
+1

你知道这是否仍然发生在TS v1.0?我得到 - VSTSC:错误TS5007:生成:无法解析引用文件:'COMPUTE_PATHS_ONLY'。 [C:\一个\ SRC \主\ RecruitCloud \ RecruitCloud.csproj] – RubbleFord

0

我也遇到过这个问题。此问题仅在我使用Web Developer Tools安装Visual Studio 2015之后才出现,当时我以前使用的是Visual Studio 2013,其中一切正常。它现在将在VS2015中构建和工作,但如果我试图在VS2013上构建它,会引发此错误。我最终只是将我的开发转移到VS2015。

相关问题