2012-10-23 86 views
3


我有一個Visual Studio 2012 TypeScript項目。當我第一次創建項目時,我添加了2個新的.ts文件,這些文件是Framework.ts & Graphics.ts。我最近添加了兩個TypeScript文件作爲聲明文件並將它們命名爲.d.ts,例如Framework.d.ts和Graphics.d.ts。有趣的部分是,所有這些文件中的4個都將Build Action屬性設置爲TypeScriptCompile,但其中只有2個構建(Framework.ts和Graphics.ts),其他.d.ts文件仍然具有原始.js構建代碼形狀模塊。我想可能是擴展名爲.d.ts的問題,並將這些文件重命名爲Framework_d.ts和Graphics_d.ts。這也沒有建立它們!Visual Studio 2012 TypeScript項目在編譯期間忽略兩個文件

此時我不知所措。我看着的csproj文件:

<TypeScriptCompile Include="Framework\Framework.d.ts" /> 
<Content Include="Framework\Framework.d.js"> 
    <DependentUpon>Framework.d.ts</DependentUpon> 
</Content> 
<Content Include="Graphics\Graphics.d.js"> 
    <DependentUpon>Graphics.d.ts</DependentUpon> 
</Content> 
<Content Include="TestPages\SpriteBatch.html" /> 
<TypeScriptCompile Include="Framework\Framework.ts" /> 
<Content Include="Framework\Framework.js"> 
    <DependentUpon>Framework.ts</DependentUpon> 
</Content> 
<Content Include="Graphics\Graphics.js"> 
    <DependentUpon>Graphics.ts</DependentUpon> 
</Content> 
<TypeScriptCompile Include="Graphics\Graphics.d.ts" /> 
<TypeScriptCompile Include="Graphics\Graphics.ts" /> 

然後爲打字稿編譯器執行命令:

<Target Name="BeforeBuild"> 
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

這確實應該太建這些文件。我只是不知道爲什麼拒絕。有誰知道如何解決這一問題?

回答

2

如果他們像你說的聲明文件,那麼他們將沒有JavaScript輸出。我認爲你不需要將這些添加到項目中,或者至少不需要對它們應用TypeScriptCompile構建操作。您可以將它們包含在其他源文件中使用

///<reference path="Framework\Framework.d.ts" 
///<reference path="Graphics.d.ts" 

因此他們看到聲明。

+1

如果我使用 進口框架=模塊( 「框架」); 然後我得到一個錯誤,因爲require()函數不存在。因爲js中生成的行是var Framework = require(「Framework」);有什麼我缺少的要求? – IanelGreenleaf

+0

所以你需要在你的網頁上包含require.js(編譯後的打字稿之前)。如果您設置了編譯標誌--target AMD,TypeScript將生成AMD兼容代碼(請參閱此主題以瞭解如何編輯VisualStudio項目文件以添加必要的編譯器標誌; http://stackoverflow.com/questions/12811034/targeting-es5 -with-typescript-in-visual-studio在底部的註釋中;這也包括源地圖的標誌)但是,即使TypeScript將生成對require的調用,但它不包括require功能。 – Ezward

+0

另外,你需要擴展到模塊的完整路徑,所以它需要: Framework = module(「Framework \ Framework.ts」)。 這工作如果Framework.ts是真正的打字編碼結果在編譯的JavaScript。如果你只是包含聲明,使用///引用的東西.. – Ezward

0

我不確定這是否是您的情況, 但有一些關於.ts文件編碼的問題。

不幸的是,TypeScript無法編譯UTF-8 簽名。 您可以通過 「FILE」 - >「高級保存選項」 - >選擇「無簽名的UTF-8」來選擇另一個保存選項。

檢查當前問題。 http://typescript.codeplex.com/workitem/85

由於

相關問題