什么可能导致Visual Studio / C#错误MSB3105:重复资源

时间:2008-11-24 09:02:44

标签: c# visual-studio

在处理现有项目时,我在尝试编译解决方案时突然遇到以下错误:

错误MSB3105:在“Resources”参数中多次指定了“[filename]”项。 “Resources”参数不支持重复项目。

现在,据我所知,我没有对影响资源的项目进行任何更改。此外,我已检查项目中的每个文件,但此文件的任何位置都没有重复的引用。 现在我已经找到了一些有关此错误的论坛条目:

1)打开.csproj文件并删除重复的引用。 [试过这个,但我找不到任何重复的内容]

2)在“部分类”项目中,将所有内容移动到单个类中。 [可以试试这个,但是项目从一开始就被分成了部分类,我不想因为错误而改变这个]

那还有什么可能导致这个?

6 个答案:

答案 0 :(得分:15)

您是否尝试在解决方案资源管理器中显示所有文件?你可以在那里的某个地方有一个重复的.rsx文件。

答案 1 :(得分:5)

我在Roy .NET forum posting找到了答案,而Theresa毕竟是正确的,尽管我不认识它。
如果您将主表单类拆分为部分类,则部分部分最终作为单独的项目在解决方案资源管理器中。如果你双击它们,它们会在设计师模式中显示为普通形式。但是,如果您(意外地)删除这些表单上的控件,Visual Studio将为其创建一个新的.resx文件和一个InitializeComponent例程。但由于此表单实际上只是Main Form类的一部分,因此会导致“重复资源”错误。除了删除InitializeComponent例程并手动删除.resx文件之外,没有其他解决方案。

答案 2 :(得分:3)

确保在yourForm.cs下没有定义重复的资源(.resx)。如果重命名了表单,请删除旧资源,因为在编译期间将使用新名称创建新资源。

答案 3 :(得分:2)

我犯了同样的错误。删除mainform.designer.vb,然后我再次从回收站恢复它,并在编译时发现此错误消息。 我尝试在谷歌搜索,有人建议检查.vbproj。这样做,并在某些行上发现了重复。

答案 4 :(得分:2)

我也有这个,在VB中。有“真实形式”文件frmMain,然后我创建了新的类文件并将其修改为部分公共类frmMain 。例如,我有一个 ImportFromExcel.vb 部分类文件(我不想使用相当复杂的Excel导入代码弄乱 frmMain.vb 。)

在我确定要在Sub ImportFromExcel 中使用 OpenFileDialog 之前,一切正常。我将OFD从工具箱拖到 ImportFromExcel 文件的Designer视图中。 (我不知道为什么这个视图存在,如果你不能用它做任何事情!)但无论如何......将OFD拖到Partial Class Designer创建了一个 ImportFromExcel。 resx 文件。拖放操作还在 ImportFromExcel 中创建了一个InitializeComponent子,这是一个多余的并显示错误 - 只需稍加编辑即可轻松纠正。

最终,我选择不使用拖动的资源,而是将代码本地化在 ImportFromExcel.vb 文件中。

您真正需要做的就是右键单击 ImportFromExcel.resx 文件,然后选择删除。其他所有东西似乎都“自我修复”,现在它构建得很好。

答案 5 :(得分:1)

就我而言,发生此问题是因为文件在GIT存储库中具有相同的名称但大小写不同。 例如MyFile.csmyFile.cs

如果在Windows上进行检出,则其中一个文件将被另一个文件覆盖(无消息,无警告)。因此,它正在编译,我们什么也没注意到。但是,如果您尝试在Linux(使用.NET Core)上进行编译,则两个文件都会存在,并且在编译时会出现此错误。