相关疑难解决方法(0)

39
推荐指数
5
解决办法
3万
查看次数

C# - 在项目之间共享资源文件

我想两个如何在两个(或更多)项目之间共享资源文件?

所以,要恢复,我有三个项目:

包含资源文件的开发项目(CF.NET)(包含所有定义).

我还有两个空的项目但是链接到开发项目,每次只是一个不同的构建,所以当我修改开发项目时,所有三个项目也都会更新.(修改csproj文件.)

问题是,资源文件怎么样?当我尝试从开发项目访问时,我获得了所有资源,但是当我从另外2个人那里尝试时,它会抛出"MissingManifestResourceException".

不知道如何解决这个问题?

谢谢.


[编辑]

这就是我所做的:

创建一个名为"RealProject"的项目,其中包含所有代码(包括资源文件)创建一个名为"LinkedProject"的项目,其中不包含任何内容(我删除了所有文件并修改csproj文件,如下所示:

  <ItemGroup>
    <Compile Include="..\RealProject\**\*.cs" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

所以在LinkedProject目录中我只有:

  • [目录] bin
  • [目录] obj
  • [File] LinkedProject.csproj

整个LinkedProject使用RealProject文件,它只是一个不同的配置构建(请参阅此处了解原因:C# - .NET和CF.NET的代码编译器)

进入该配置后,我无法访问RealProject中的资源文件...

如果您需要屏幕或更详细的解释,请询问.


[编辑]

有了这个代码,它的工作原理,资源管理器没有加载好的程序集名称,但它应该存在更好的解决方案!

Assembly ass = Assembly.ReflectionOnlyLoadFrom(@"..\..\..\RealProject\bin\Debug\RealProject.dll");
ResourceManager manager = new ResourceManager("RealProject.Properties.Resources", ass);
Run Code Online (Sandbox Code Playgroud)

[解]

要检查的事项:

  • LinkedProject与RealProject具有相同的命名空间
  • 添加资源作为链接
  • 清理所有解决方案
  • 重建它

测试!

c# resources

7
推荐指数
1
解决办法
9279
查看次数

为什么 GetManifestResourceStream 返回 null(使用 dotnet core)

使用dotnet核心:.NET Core SDK版本:3.1.102

为什么以下返回 null

typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")
Run Code Online (Sandbox Code Playgroud)

我验证了该文件存在于解决方案中,并且在属性“嵌入式资源”中具有构建操作

.net c# reflection .net-assembly .net-core

7
推荐指数
1
解决办法
4582
查看次数

标签 统计

.net ×2

c# ×2

reflection ×2

.net-assembly ×1

.net-core ×1

resources ×1