TypeScript での JavaScript フレームワーク プロジェクトの書き直しが完了しました。現在、これらのファイルを他の多くの Web プロジェクトで使用しようとしています。
それらをWebプロジェクトにリンク(リンクされたファイル)しようとしました。最初に気付いたのは、ビルド アクションを「TypeScriptCompile」に変更できないことです。.ts ファイルは、リンクされている場所ではなく、ソース フォルダーでコンパイルされます。問題は、Web プロジェクトで新しいファイル .ts ファイルを作成するときに、リンクされたファイルが表示されず、TypeScript エラーが発生することです。
また、リンクされた TypeScript ファイルを使用してプロジェクトをビルドしようとするたびに、Visual Studio がクラッシュします。
AMD と RequireJS を使用しています。構造を尊重する必要があります。baseURL を /Scripts/ に設定しています。フレームワークと TS ファイルはその構造内にある必要があります。
誰にもアイデアはありますか?
ここに私が試しているもののサンプルがあります
フレームワーク プロジェクトのリンク ファイルのコンテンツ:
export class Log {
static error (msg: string) { console.log(msg); }
}
リンク ファイルを使用した Web プロジェクトのファイルからのコンテンツ:
import fw = module('linkedFile');
fw.Log.error('this file can\'t find the linked file, so this code won\t work');
ありがとう !
更新: これまでに見つけた唯一の方法は、Frameworks ファイルをソース プロジェクトからビルド後の Web プロジェクトにコピーすることです。
xcopy /y /e /s /d "$(ProjectDir)Scripts\." "$(ProjectDir)..\..\OtherProject\Scripts\."
これに関する問題は、最初のプロジェクトでフレームワーク ファイルを編集する必要があることです。そうしないと、変更が上書きされます。
更新 2: 現在、このスクリプトを使用して、リンクされたすべてのファイルをプロジェクト内の場所に自動的にコピーしています。CSPROJ ファイルを編集する必要があり、それは WEB プロジェクトでなければなりません。完全な説明については、リンクを確認してください。
<!-- ======================== -->
<!-- Copy linked files -->
<Target Name="_CopyLinkedContentFiles">
<!-- Remove any old copies of the files -->
<Delete Condition=" '%(Content.Link)' != '' AND Exists('$(WebProjectOutputDir)\%(Content.Link)') " Files="$(WebProjectOutputDir)\%(Content.Link)" />
<!-- Copy linked content files recursively to the project folder -->
<Copy Condition=" '%(Content.Link)' != '' " SourceFiles="%(Content.Identity)" DestinationFiles="$(WebProjectOutputDir)\%(Content.Link)" />
</Target>
<!-- Override the default target dependencies to -->
<!-- include the new _CopyLinkedContentFiles target. -->
<PropertyGroup>
<PrepareForRunDependsOn>
$(PrepareForRunDependsOn);
_CopyWebApplication;
_CopyLinkedContentFiles;
_BuiltWebOutputGroupOutput
</PrepareForRunDependsOn>
</PropertyGroup>
<PropertyGroup>
<!-- <PostBuildEvent>$(MSBuildBinPath)\msbuild.exe "$(ProjectDir)_build\site.xml"</PostBuildEvent> -->
</PropertyGroup>
<!-- ======================== -->