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

.NET7-Windows项目添加XAML本地命名空间后源生成文件未包含的解决方法

解决WPF添加本地命名空间后源生成器文件丢失的编译错误

在.NET7 Windows项目中,使用MimeTypes这类源生成器原本可正常编译运行。但在WPF用户控件的XAML文件中添加本地命名空间声明xmlns:local="clr-namespace:Example"后,生成的MimeTypes文件不再被项目包含,进而触发编译错误CS0103(当前上下文中不存在名称“MimeTypes”)。

修改项目文件的解决方案

只需在项目文件(.csproj)中添加显式的文件包含规则,确保所有源生成器输出的C#文件都被纳入编译。修改后的完整项目文件如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0-windows</TargetFramework>
    <LangVersion>10</LangVersion>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <UseWindowsForms>true</UseWindowsForms>
    <UseWPF>true</UseWPF>
    <NoWarn>CA1416</NoWarn>
  </PropertyGroup>
  <PropertyGroup>
    <OutputType>Library</OutputType>
  </PropertyGroup>

  <!-- 新增规则:递归包含所有源生成的C#文件 -->
  <ItemGroup>
    <Compile Include="$(BaseIntermediateOutputPath)**/*.cs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="MimeTypes" Version="2.4.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>

规则说明

添加的<Compile Include="$(BaseIntermediateOutputPath)**/*.cs" />会递归扫描项目的中间输出目录(默认是obj文件夹),将所有源生成器生成的C#文件强制纳入编译范围,避免因WPF XAML编译逻辑变更导致生成文件被遗漏。

内容的提问来源于stack exchange,提问作者Benny Bürger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:50:44