我已经用 TypeScript 重写了我的 javascript 框架项目。现在我正在尝试在许多其他 Web 项目中使用这些文件。
我已经尝试将它们链接(链接文件)到网络项目中。我注意到的第一件事是,我无法将 Build Action 更改为“TypeScriptCompile”。.ts 文件在其源文件夹中编译,而不是在它们链接的位置。问题是在 Web 项目中创建新文件 .ts 文件时,它看不到链接文件,并且出现 TypeScript 错误。
此外,每次我尝试使用 Linked TypeScript Files 构建项目时,它都会使 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');
谢谢 !
更新: 到目前为止,我发现的唯一方法是将框架文件从源项目复制到我在 Post Build 上的 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>
<!-- ======================== -->