我已经用 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/

10-11 23:08
查看更多