ASP.NET Core 2类库项目启用TypeScript编译遇VS2017识别问题
嘿,我刚好碰到过类似的场景,给你几个针对VS2017 + ASP.NET Core 2类库启用TypeScript编译的实用方案,完全不用单独建Web项目:
方案1:手动配置MSBuild让VS识别TypeScript
VS2017对ASP.NET Core类库的TypeScript支持不像Web项目那样自动,所以得手动修改项目文件(.csproj)来启用编译链:
- 右键类库项目 → 选择“编辑项目文件”,添加以下配置:
<PropertyGroup> <!-- 开启保存时自动编译TypeScript --> <TypeScriptCompileOnSaveEnabled>true</TypeScriptCompileOnSaveEnabled> <!-- 指定TypeScript工具版本,比如3.9,根据你安装的版本调整 --> <TypeScriptToolsVersion>3.9</TypeScriptToolsVersion> </PropertyGroup> <ItemGroup> <!-- 包含所有TypeScript文件 --> <TypeScriptCompile Include="**\*.ts" /> <!-- 把生成的JS文件作为资源复制到输出目录 --> <Content Include="**\*.js" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup>
- 保存项目文件后,VS会自动加载TypeScript编译支持,你可以在“生成”菜单里看到编译选项。
方案2:解决package.json的依赖安装问题
因为VS2017的类库右键没有“Package Install”选项,直接用命令行搞定就行:
- 打开项目所在的文件夹,右键选择“在此处打开命令窗口”(或者用VS自带的“包管理器控制台”切换到项目目录)
- 运行命令
npm install,VS2017会自动识别生成的node_modules文件夹,后续编译时也会用到这些依赖。
方案3:优化tsconfig.json适配Cosmos DB脚本场景
既然你的JS是给Cosmos DB服务器端用的,得把TypeScript编译配置调整成适合后端脚本的格式,修改tsconfig.json:
{ "compilerOptions": { "target": "ES5", // Cosmos DB支持ES5语法 "module": "CommonJS", "outDir": "./dist", // 指定统一的输出目录,方便管理 "strict": true, "esModuleInterop": true, "skipLibCheck": true }, "include": ["src/**/*.ts"], // 假设你的TS文件都在src目录下 "exclude": ["node_modules"] }
然后记得在.csproj里把输出目录的JS文件包含为资源:
<Content Include="dist\**\*.js" CopyToOutputDirectory="PreserveNewest" />
方案4:用Task Runner Explorer自动绑定编译命令
如果不想每次手动跑npm install或者tsc,可以配置自动任务:
- 在项目根目录新建
.vscode文件夹,里面创建tasks.json文件,内容如下:
{ "version": "2.0.0", "tasks": [ { "label": "安装npm依赖", "type": "shell", "command": "npm install", "cwd": "${workspaceFolder}", "group": { "kind": "build", "isDefault": false } }, { "label": "编译TypeScript", "type": "shell", "command": "tsc", "cwd": "${workspaceFolder}", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$tsc"] } ] }
- 打开VS的“视图”菜单 → “其他窗口” → “Task Runner Explorer”,把这两个任务绑定到“构建前”事件,这样每次生成项目时会自动执行依赖安装和TS编译。
内容的提问来源于stack exchange,提问作者Donal McWeeney
相关产品推荐
相关产品推荐

