我已经用 TypeScript 重写了我的 javascript 框架项目。现在我正在尝试在许多其他 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');
谢谢 !
更新:
到目前为止,我发现的唯一方法是在 Post Build 上将 Frameworks 文件从源项目复制到我的 Web 项目:
xcopy /y /e /s /d "$(ProjectDir)Scripts\." "$(ProjectDir)..\..\OtherProject\Scripts\."
这样做的问题是我们必须在第一个项目中编辑框架文件,否则我们的更改将被覆盖。
更新 2:
我目前正在使用此脚本自动复制项目中所有链接文件。您需要编辑您的 CSPROJ 文件,它必须是一个 WEB 项目。检查链接以获取完整说明:
http://consultingblogs.emc.com/jamesdawson/archive/2008/06/03/using-linked-files-with-web-application-projects.aspx?CommentPosted=true#commentmessage
<!-- ======================== -->
<!-- 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>
<!-- ======================== -->
最佳答案
当您链接文件时,路径仍然相对于其实际位置,因此您必须使用一大堆 ../../../才能到达那里。
一种选择是将文件设置为在构建时复制,以便将其复制到您的 bin 文件夹中。我这样做是为了测试,但不是为了可发布的代码。
另一种选择是打包您的模块,以便更轻松地使用特定版本。您可以使用私有(private) NuGet 存储库来执行此操作。
关于visual-studio-2012 - 当前项目的 TypeScript 文件看不到 TypeScript 的链接文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17900825/