我想知道如何在两个(或多个)项目之间共享资源文件。具体而言,我有三个项目:
1. 开发项目(CF.NET),其中包含资源文件(包括所有定义)。 2. 我有两个其他项目,它们是空的,但链接到开发项目,每次只是不同的构建,因此当我修改开发项目时,这三个项目也会更新。(修改csproj文件。) 3. 问题是,资源文件怎么办?当我尝试从开发项目访问时,我可以获得所有资源,但当我尝试从另外两个项目中访问时,它会抛出“MissingManifestResourceException”异常。
你有什么解决方法吗?
谢谢。
[编辑]
这是我做的:
1. 创建一个名为“RealProject”的项目,其中包含所有代码(包括资源文件)。 2. 创建一个名为“LinkedProject”的项目,其中不包含任何内容(我将其中的所有文件都删除了,并将csproj文件修改为以下内容:
在LinkedProject目录中,我只有以下文件和文件夹:
[Directory] bin [Directory] obj [File ] LinkedProject.csproj
整个LinkedProject使用RealProject文件,只是不同的配置构建(请参见此处了解原因:C# - Code compiler for .NET & CF.NET)。
一旦进入该配置,我就无法访问来自RealProject的资源文件...
如果您需要屏幕截图或更详细的说明,请随时提出。
[编辑]
使用此代码,它可以工作,但是ResourceManager未在正确的程序集名称上加载,但应该存在更好的解决方案!
1. 开发项目(CF.NET),其中包含资源文件(包括所有定义)。 2. 我有两个其他项目,它们是空的,但链接到开发项目,每次只是不同的构建,因此当我修改开发项目时,这三个项目也会更新。(修改csproj文件。) 3. 问题是,资源文件怎么办?当我尝试从开发项目访问时,我可以获得所有资源,但当我尝试从另外两个项目中访问时,它会抛出“MissingManifestResourceException”异常。
你有什么解决方法吗?
谢谢。
[编辑]
这是我做的:
1. 创建一个名为“RealProject”的项目,其中包含所有代码(包括资源文件)。 2. 创建一个名为“LinkedProject”的项目,其中不包含任何内容(我将其中的所有文件都删除了,并将csproj文件修改为以下内容:
<ItemGroup>
<Compile Include="..\RealProject\**\*.cs" />
</ItemGroup>
在LinkedProject目录中,我只有以下文件和文件夹:
[Directory] bin [Directory] obj [File ] LinkedProject.csproj
整个LinkedProject使用RealProject文件,只是不同的配置构建(请参见此处了解原因:C# - Code compiler for .NET & CF.NET)。
一旦进入该配置,我就无法访问来自RealProject的资源文件...
如果您需要屏幕截图或更详细的说明,请随时提出。
[编辑]
使用此代码,它可以工作,但是ResourceManager未在正确的程序集名称上加载,但应该存在更好的解决方案!
Assembly ass = Assembly.ReflectionOnlyLoadFrom(@"..\..\..\RealProject\bin\Debug\RealProject.dll");
ResourceManager manager = new ResourceManager("RealProject.Properties.Resources", ass);
[解决方案]
需要检查以下几点:
- LinkedProject与RealProject有相同的命名空间
- 将资源添加为链接
- 清理所有项目解决方案
- 重新构建项目
进行测试!
LinkedProject
这样的命名空间,而你的主项目在其项目文件中配置了一个像MainProject
这样的命名空间,那么这将导致错误。 - Daniel Hilgarth