You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Blazor WASM中使用.NET库的TypeScript编译输出及NuGet打包问题

Blazor WASM中TypeScript类库及NuGet打包问题

基础层面

我有一个Blazor WASM应用,需要用到JavaScript,但希望改用TypeScript。添加tsconfig文件后,wwwroot文件夹中的TypeScript会被编译为JS并包含在wwwroot输出中,目前已能在浏览器运行的WASM中正常加载使用。

类库层面

这是第一个核心问题:我想将TypeScript及相关模块迁移到独立的类库项目中,操作步骤如下:

  • 创建新的类库项目,在其中新建wwwroot文件夹,将ts文件移入该文件夹,tsconfig文件移至类库根目录
  • 在类库中安装Microsoft.JSInterop包,并从Blazor应用引用该类库

遗憾的是,编译后的JS文件未被包含在应用的输出中,不确定该如何推进。难道必须在应用中添加tsconfig?这显然不合理,应用应该只需直接使用类库提供的内容,类库应能独立完成编译并提供输出,无需应用额外操作。

更新

最初忘记给类库项目添加Microsoft.TypeScript.MSBuild包。添加该包并配置<TypeScriptCompile Include="wwwroot\myFile.ts" />(从初始Blazor WASM项目复制的配置)后,出现错误提示:无法遍历Uint8Array,原因是至少需要es2015环境,但tsconfig.json里的"target"明明设置为es2020,猜测是tsconfig未被正确识别。

更新2

必须将类库创建为Razor类库(.Sdk.Razor),现在TypeScript已能正常编译为JS。随后按照建议将JS文件的复制属性设置为PreserveNewest,当前JS文件已能包含在应用输出中。

新问题

Blazor WASM加载该JS文件时返回404错误,无法正常加载。

下一步:NuGet包

解决上述问题后,我打算将该类库发布为NuGet包,让用户可以直接安装到Blazor WebAssembly项目中,无需自行创建tsconfig或处理JS文件。
之前看到有方案提到要在csproj文件中将JS文件设置为"content",让NuGet在安装时把JS文件复制到应用的wwwroot目录。但我的类库中没有现成的JS文件,只有会编译成JS输出的ts文件,应该如何配置NuGet来获取并复制编译后的JS文件?


内容的提问来源于stack exchange,提问作者Squirrelkiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:25:48