2012-12-06 252 views
47

正在开发.NET 3.5 .NET Framework的.NET应用程序。最近我创建了一个名为WorkersScreen的新窗体。当我尝试运行该项目时出现此错误:两个输出文件名解析为相同的输出

Error 1 Two output file names resolved to the same output path: "obj\x86\Debug\DryWash.WorkersScreen.resources" DryWash 

这是什么意思?

+6

确保你没有两个.resx文件 –

+0

@WimOmbelets,我刚刚也得到了这个错误,并感谢你为我节省了时间与原因......我想说你应该把它作为答案 –

+0

问题是具有相同名称的两次迁移(大小写是区别)。 – tdrake

回答

-1

我确认WimOmbelets在评论中给出的答案。当你在VS2012中重新命名一个类时,这显然会发生(我以前从未使用过)。

我不能肯定这是原因,但有一件事我没有从我的正常方式不同的是,我用F2将其重命名,而不是改变它,然后按控制 - 。

59

这可能发生在两个.resx文件指向同一表单的情况下。重命名表(其他原因可以申请,我不是很确定)

时大多发生,如果您的特定形式的文件看起来是这样的:

Form1.cs 
Form1.designer.cs 
MyFormerFormName.resx 
Form1.resx 

那么通常意味着重命名的形式,但Visual Studio中没有删除旧的.resx文件。一旦您手动删除文件(在本例中为MyFormerFormName.resx),则应在下次构建时消除错误。

+7

也重新打开项目并从解决方案资源管理器中删除MyFormerFormName.resx,它仍可能被visual Studio引用。这通常适用于我。 – XPecto

+1

@XPecto谢谢! Wim的解决方案在我这样做之前一直没有奏效! –

+0

为什么不选择这个解决方案?! –

0

这只是发生在我身上。我意外地将一个表格拖放到另一个表格中。它最终制作了一份名为“Copy of”的副本。我删除了它,问题就消失了。

1

我做了一些搜索 我有同样的问题 它可能是东阳的形式有两种的.resx 如果你尝试删除一个,这个问题将不复存在 我的表格:

Form1.Designer.cs 
Form1.resx 
Log_in.resx 
Form1 

我删除Log_in.resx和我的程序再次工作

-1

我以为我会在遇到这个错误后,至少在一个随机的论坛上发帖,希望能够缓解别人的问题。我搜索了很多谷歌网站,没有发现我确切的问题。我的原因是相似的,但在某些方面有所不同。

我实际上有一个分布在多个文件中的分类。这个班是一个表格班。这本身是成功的,并没有造成问题。但是,这导致新类在保持分离的“类表格”代码的同时保持其唯一的文件名。这很可能不是犹太教的练习,但当时发生的事情不多。这似乎是一个很好的选择,可以避免大量混乱的代码。不用说,下次我只会使用区域或其他替代方案。

随后发生,当我试图从第二个文件采取的代码和复制/粘贴到只有一类新的非形式的文件,因为我本来打算在本质上把它变成一个库,使代码中的错误更适当和可读。由于我不知道究竟是什么原因导致了错误发生,并且发生了很多变化,所以需要一些时间来跟踪。即使在反转代码之后,我仍然错过了一对方法。

包含具有initializeComponent和窗体构造函数(load)的类Form的主窗体的方法。这些方法的第二个副本似乎导致相同的错误。即使删除了额外的代码和额外的表单和resx文件。我甚至尝试删除合法的resx文件,因为它不是主动需要的。我无法有效地跟踪它,因为任何错误指向这些代码段的合法版本。 Ctrl + F和备份副本是你的朋友。

希望帮助别人

-1

这发生在我身上时,我复制一个形式重用的大部分功能,然后改名为形式。我去了引用的目录,发现实际上只有一个文件,复制了有问题的文件,将其重新命名为引用我的新表单的名称,然后将新文件粘贴回目录中。

我不认为这是一个很好的做法(我是C#的新手),但它确实有效,而不必重新创建所有内容。我还需要在整个解决方案中的几个地方更新表单名称,原始表单和新表单都令人惊讶。

复制表单似乎不是一个好主意。

+0

这就是我所做的(在对象资源管理器中复制和粘贴整个.cs,重命名为.cs,然后在VS 2013中重命名表单名称[属性]),但这些文件本身存在,似乎被命名为适当的 - 我仍然得到错误? –

+0

啊..我想我现在看到它。当我重命名复制文件上的表单时,它也重命名原始表单!并重构所有参考。喜悦。 –

+0

@daBich是的,你知道了,我已经将Form1.cs复制到Form1_Copy.cs,将Form1_Copy重命名为Form2,但后来发现在Form1.cs和Form1.Designer.cs中对类Form1的所有引用已更改为Form2 。 svn恢复做的伎俩:-) – JonP

0

当我运行Add Migration命令时,发生了这种情况,并给出了与我的项目名称相同的名称作为迁移类。我删除了所有迁移类并添加了新的,再次构建解决方案。

0

在我的情况下,问题是由一个Embedded.resx文件的EmbeddedResource标记引起的,该文件以某种方式被添加到.csproj文件中。

具体做法如下:

<EmbeddedResource Include="Forms\frmMenu.designer.resx"> 
     <DependentUpon>frmMenu.designer.cs</DependentUpon> 
</EmbeddedResource> 
+0

我没有说这是答案。我只是说“在我的情况下”是否有其他人碰巧遇到同样的原因。 我很抱歉浪费你的时间阅读它。 – mtRoom

-2

我有同样的问题,当我改名使用Ctrl + R + R它VS默认提供重命名的东西我Form类之一。

然后,我在两个不同的文件(* .cs)上有了两个具有相同类名的类。

class Bar { ... } // From Bar.cs 
class Bar { ... } // This should've been Foo, from Foo.cs 

这两个Bar表示相同的资源文件,其中一个不应该。

这是一个微不足道的问题,但有时会因为看CS文件只是不能说哪一个是你应该寻找什么,可能很难找到原因。

-1

在我的选择,帮助删除一个*的.resx每一个形式,其中错误引发

详细信息

在我们的项目,我们有6 *的.resx每一个形式本地化(DE, GB,SK,RU,SRB),如果我删除(从VS)FormName.sr-Latn-CS.resx比错误消失。如果我尝试删除FormName.en-GB.resx它没有帮助。错误消失只是为了删除sr-Latn-CS.resx(也许设计者不能解决两个问题)。我第一次看到这个错误,当我从VS 2010 Win 7项目迁移到VS2010 Win 10.

18

截至8/03/16这作品对我来说!

通过右键点击您的项目卸载项目,然后点击卸载项目

enter image description here

再次右键单击您的项目,然后单击编辑项目

enter image description here

它会告诉你一些代码,查找重复的值,这在我的情况是这个样子

<EmbeddedResource Include="frmTerminalSerial.resx"> 
     <DependentUpon>frmTerminalSerial.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="frmVisual.resx"> 
     <DependentUpon>frmVisual.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="frmVisual.resx"> 
     <DependentUpon>frmVisual.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="My Project\Resources.resx"> 
     <Generator>VbMyResourcesResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.vb</LastGenOutput> 
     <CustomToolNamespace>My.Resources</CustomToolNamespace> 
     <SubType>Designer</SubType> 
</EmbeddedResource> 

注意这个部分,它是一个复制

<EmbeddedResource Include="frmVisual.resx"> 
     <DependentUpon>frmVisual.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="frmVisual.resx"> 
     <DependentUpon>frmVisual.vb</DependentUpon> 
</EmbeddedResource> 

删除其中的一个所以它看起来像这样

<EmbeddedResource Include="frmTerminalSerial.resx"> 
     <DependentUpon>frmTerminalSerial.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="frmVisual.resx"> 
     <DependentUpon>frmVisual.vb</DependentUpon> 
</EmbeddedResource> 
<EmbeddedResource Include="My Project\Resources.resx"> 
     <Generator>VbMyResourcesResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.vb</LastGenOutput> 
     <CustomToolNamespace>My.Resources</CustomToolNamespace> 
     <SubType>Designer</SubType> 
</EmbeddedResource> 

保存它,右键点击你的项目,然后单击重装项目。你完成了!

0

如果这个问题出现了,而你用的EntityFramework工作,并试图Add-Migration,解决方法很简单:删除Migrations文件夹(在Solution Explorer)和执行Enable-Migrations。如果您需要备份迁移。

+0

我的确在使用migrations,但在我的情况下,我做错了什么是“Add-Migration lowercasename”。删除最新的迁移.cs文件,并使用正确的名称运行“添加迁移”为我修复。 –

0

我有问题,这是因为我有一个部分类自定义控件

我不小心创建一个.resx文件为偏

我想我被击中的部分类转变F7和生产空设计形式这样做。

删除部分类上的.resx文件为我解决了它。我正在使用版本控制,它显示它是一个新文件。

希望这有助于

0

搜索中的所有项目在错误列表报班,想在这个问题的情况下DryWash.WorkersScreen它可以在不同的文件名的另一个文件,但相同的类名内重复。

0

当我意外生成与业务对象具有相同名称的迁移时,我遇到了此问题。 解决方法是删除迁移,然后用不同的名称创建一个新的迁移。

4

通常,如果你创建一个这样

Add-Migration "UpdateProducts" 

Visual Studio中的迁移将创建一个类名像UpdateProducts迁移。如果稍后使用相同的迁移名称添加新的迁移,它将生成一个类名为UpdateProducts1的迁移,自动将增加的数字作为后缀添加到结尾。每次生成新迁移时,数字都会增加1。

在我们的案例中,出于某种原因,VS感到困惑,并开始使用与现有迁移相同的类名生成后续迁移,以便有两个具有相同名称的自动生成的迁移。

只需更改新迁移的类名即可清除问题。

0

对我来说,问题在于复制和粘贴.aspx,而不是重命名类文件后面的代码以匹配复制的aspx文件的名称。更改背后的代码和设计器类名称的工作。