【发布时间】:2023-09-04 00:51:01
【问题描述】:
我有一个 ASP.NET MVC / Angular2 项目,它使用 MSBuild 来编译我的 Typescript 文件。除了我的 Angular2 代码(app.ts 等)之外,该项目还包含整个 Angular2 源代码及其 NodeJS 依赖项。
我的问题是 MSBuild 正在编译整个解决方案中的每个 Typescript 文件 - 包括 Angular2 源代码、它的依赖项和我的 app.ts 代码。我想从编译中排除位于 node_modules 文件夹中的任何 Typescript 文件。
我的理解是tsconfig.json 文件通常负责将某些文件或目录排除在编译之外(请参阅this question),但 ASP.NET 项目中的.csproj 文件将取代tsconfig.json。所以我想弄清楚在.csproj 文件中写什么来告诉MSBuild 和tsc.exe 不 来编译特定的文件或文件夹。
MSBuild Typescript compiler options documentation 没有帮助。有人对此有任何见解吗?
【问题讨论】:
-
你没有使用 tsconfig.json 文件吗?我之所以问,是因为不清楚您是否已经通过在 .csproj 中包含文件或到底发生了什么来覆盖
exclude: []。 -
@silentsod 我正在使用
tsconfig.json文件。我最初的假设是.csproj的功能类似,并且.csproj附加在tsconfig.json文件中的任何内容上——所以我假设有某种XML 语句可以包含在.csproj文件中在项目构建时从编译中排除 Typescript 文件。 但是,我查看了详细的 MSBuild 输出,它看起来像是找到了tsconfig.json文件并可能从中读取 - 所以我不确定.csproj在幕后做什么。 -
一个 .csproj 文件应该只列出您的应用程序文件以供编译,如果您包含来自 node_modules 的任何内容,我会从您的项目中排除该文件夹。无论如何,您不应该直接从 node_modules 发布任何内容。然后,在您的 tsconfig.json 中,您将拥有您的
exclude: ['node_modules', 'typings'](如果您使用的是 @types 而不是 typings,那么显然您将没有 typings 文件夹)。 -
我将结合一些 cmets 来尝试回答,您不是第一个遇到这些问题的 ASP.NET 人。当我在发现和学习过程中处于更进一步的阶段时,我有一点领先优势。就写出东西而言,它与 angularjs、纯 TypeScript 或纯 JavaScript 真的不一样。据我所知,NPM 带来了一整套附带的东西。
-
顺便说一句,如果您想在原始问题中包含关于发布和打包 node_modules 的第二个问题,这会使我的回复看起来不那么疯狂。
标签: asp.net-mvc angular typescript msbuild csproj