本文主要记录在 Windows 上安装 .NET SDK、用 dotnet new webapp 创建 Razor Pages 项目,以及为后续扫描片源信息接入 MediaInfo.DotNetWrapper 与原生 MediaInfo.dll 的步骤。
示例项目名 MediaManager,目标是媒体库管理类应用的脚手架;配置中的电影目录、SMB 盘符请按本机替换。SDK 大版本以当时 LTS 为例(文中为 .NET 10 预览/LTS 记录,安装时以 官网下载页 当前 LTS 为准)。
安装 SDK
从官网安装当前 LTS 的 .NET SDK 后,在 PowerShell 中验证:
dotnet --version
能打印版本号即 CLI 可用。无需把个人安装路径写进文档。
创建 Web 项目
在工作目录执行:
dotnet new webapp -n MediaManager
cd MediaManager
dotnet run
终端会给出监听地址(示例曾为 http://localhost:5187,以本次输出为准)。浏览器打开该地址,应看到模板欢迎页。
目录结构(Razor Pages 模板)
MediaManager/
├── appsettings.json
├── MediaManager.csproj
├── Program.cs
├── Pages/
│ ├── Shared/
│ ├── Index.cshtml
│ └── Index.cshtml.cs
└── wwwroot/
├── css/
├── js/
└── lib/
| 路径 | 作用 |
|---|---|
Program.cs | 应用入口:服务注册、中间件管道;后续数据库、后台扫描任务等在此挂载 |
appsettings.json | 配置(连接串、媒体目录等),避免硬编码 |
Pages/*.cshtml | 页面标记 |
Pages/*.cshtml.cs | 页面模型与处理逻辑 |
wwwroot/ | 静态资源;海报等也可经静态文件中间件映射 |
*.csproj | 目标框架与 NuGet 包引用 |
添加媒体目录配置
在 appsettings.json 增加节点(路径为示例):
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"MediaConfig": {
"MovieDirectory": "Z:\\testmovies"
}
}
JSON 中 Windows 路径反斜杠需写成 \\。Linux/NAS 部署时可改为 /mnt/<pool>/movies 一类路径。配置绑定到 C# 选项类的写法可在后续数据库/扫描篇展开。
接入 MediaInfo
安装 NuGet 包装包
在项目目录:
dotnet add package MediaInfo.DotNetWrapper
包装库通常只提供托管 API,运行时仍依赖原生 MediaInfo.dll。
放置原生 DLL
- 打开 MediaInfo Windows 下载页。
- 下载 DLL without installer 的 64-bit 包。
- 解压后找到
MediaInfo.dll,复制到项目根目录(与Program.cs、*.csproj同级)。
复制到输出目录
默认根目录松散文件不会进 bin/Debug/...。在 MediaManager.csproj 中增加:
<ItemGroup>
<None Update="MediaInfo.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
完整示意(包版本以 dotnet add 结果为准):
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MediaInfo.DotNetWrapper" Version="1.0.7" />
</ItemGroup>
<ItemGroup>
<None Update="MediaInfo.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
重新 dotnet build / dotnet run 后,输出目录中应存在 MediaInfo.dll。若运行时报找不到原生库,优先检查架构(x64)与 CopyToOutputDirectory。
验证结果
| 步骤 | 判断 |
|---|---|
| SDK | dotnet --version 有输出 |
| 模板站点 | dotnet run 后浏览器打开本地 URL 正常 |
| 配置 | appsettings.json 中 MediaConfig:MovieDirectory 路径存在且可读 |
| MediaInfo | 输出目录含 MediaInfo.dll;后续用包装 API 读测试片源不因缺 DLL 失败 |
扫描目录、解析分辨率/音轨/HDR 等业务代码不在本文展开,可接数据库与 EF 相关草稿。
注意事项
- 目标框架
net10.0随 SDK 升级可能变为其它 LTS 编号,以本机 SDK 支持为准。 - 原生 DLL 许可与分发遵循 MediaInfo 许可,发布安装包时勿遗漏。
- 不要把含密钥的
appsettings.Production.json提交进公开仓库。 - 截图资产若上站,应从 vault 相对路径迁到
blog-content/assets/posts/<slug>/。
参考资料
- .NET 下载
- dotnet new
- MediaInfo 下载
- NuGet:MediaInfo.DotNetWrapper(以包页说明为准)