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

如何将.cs源文件添加为DLL的嵌入式资源且保留编译与IntelliSense

实现方案

核心逻辑

SDK风格的.NET项目支持同一个文件同时归属多个生成操作项组,不需要把C#文件的默认生成动作从Compile改成Embedded resource,只需要额外将目标C#文件加入嵌入式资源列表即可,两者不会冲突。

操作步骤

  1. 先将你之前修改过生成动作的目标C#文件的Build Action改回默认的Compile,恢复正常的编译检查与IntelliSense支持。
  2. 右键点击项目→选择「编辑项目文件」,在打开的.csproj文件中添加如下配置,将目标C#文件额外标记为嵌入式资源:
<Project Sdk="Microsoft.NET.Sdk">
  <!-- 原有项目配置保持不变 -->
  <ItemGroup>
    <!-- 单个文件嵌入示例,替换为你实际的文件路径 -->
    <EmbeddedResource Include="YourTargetClass.cs">
      <!-- 可选配置:自定义资源名称,方便运行时读取,无需拼接命名空间前缀 -->
      <LogicalName>YourTargetClass.Source.cs</LogicalName>
    </EmbeddedResource>
    <!-- 批量嵌入目录下所有C#文件示例 -->
    <!-- <EmbeddedResource Include="YourSourceDir\*.cs" /> -->
  </ItemGroup>
</Project>

运行时读取嵌入式资源示例

// 替换为你的项目中任意类的类型、以及实际的资源名称
var assembly = typeof(YourProjectAnyClass).Assembly;
using var resourceStream = assembly.GetManifestResourceStream("YourTargetClass.Source.cs");
using var streamReader = new StreamReader(resourceStream);
string sourceCode = streamReader.ReadToEnd();

效果验证

配置完成后重新生成项目即可同时满足三个要求:

  • 目标C#文件会正常参与编译,编译器会主动检查语法、类型错误
  • Visual Studio会正常识别为C#源文件,提供完整的IntelliSense提示、跳转、重构支持
  • 生成的程序集内会包含目标文件的源代码作为嵌入式资源,运行时可以正常读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 14:45:07