两个输出文件名解析为相同的输出

时间:2012-12-06 08:40:57

标签: c# .net

开发用于.NET 3.5 Framework的.NET应用程序。最近我创建了名为WorkersScreen的新表单。当我尝试运行该项目时,我收到了这个错误:

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

这是什么意思?

21 个答案:

答案 0 :(得分:73)

如果两个.resx文件指向同一个表单,则会发生这种情况。大多数情况下在重命名表格时(其他原因可能适用,我不完全确定)

如果您的特定表单文件如下所示:

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

然后通常意味着您重命名了表单,但Visual Studio没有删除旧的.resx文件。手动删除文件(在此示例中为MyFormerFormName.resx)后,错误应该在下次构建时消失。

答案 1 :(得分:30)

截至2016年3月8日,对我有用

首先通过右键单击项目卸载项目,然后单击卸载项目

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>

保存,右键单击您的项目,然后单击重新加载项目。你完成了!

答案 2 :(得分:7)

通常情况下,如果您创建此类迁移

Add-Migration "UpdateProducts"

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

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

只需更改新迁移的类名即可解决问题。

答案 3 :(得分:1)

我做了一点搜索 我有同样的问题 这可能是因为你的表格有两个.resx 如果你试图删除一个,问题就会消失 我的表格:

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

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

答案 4 :(得分:1)

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

具体来说,以下内容:

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

答案 5 :(得分:1)

确保没有两个.resx文件。在项目中的YourServiceName.cs下查看。为我工作。

答案 6 :(得分:0)

我今天遇到了这个问题。

Form.Designer 的扩展名是 .resx,我的解决方案是 TestForm.Designer.resx。已经有一个 TestForm.resx。我清理了解决方案,关闭了VS,删除了TestForm.Designer.resx 文件,然后重新启动了VS。我仍然有错误。

然后我关闭了 VS 并使用 NotePad++ 打开了 .proj 文件,发现 TestForm.Designer.resx 仍然被引用。我删除了嵌入的资源。

<EmbeddedResource Include="TestForm.Designer.resx">
    <DependentUpon>TestForm.Designer.vb</DependentUpon>
</EmbeddedResource>

然后我打开 VS 并构建....它又工作了!

答案 7 :(得分:0)

这恰好发生在我身上。我不小心将一个表单“拖放”到另一个表单中。它最终制作了一份名为“副本”的副本。我删除了它,问题就消失了。

答案 8 :(得分:0)

在我的情况下,我不得不在Note ++中打开.fas { font-family: "Font Awesome 5 Free", "fa-solid-900"; font-weight: 900; } .spin { animation-name: rotate; animation-duration: 1s; animation-iteration-count: infinite; animation-timing-function: linear; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } },并在<Label text="rotate value" class="fas spin"></Label>标签中寻找.csproj文件,我发现某些奇怪的.resx语言后缀为{{ 1}}其他文件都是普通文件,没有语言后缀,也没有* .ar后缀,我删除了令人毛骨悚然的嵌入式资源标签,并为我解决了这个问题。

答案 9 :(得分:0)

我刚刚使用VS 2019社区版遇到了这个问题。

我没有重复的.resx文件。我没有重复的.cs文件。 我无法在线找到解决方案。

为解决此问题,我清理了解决方案,然后重新启动了VS。 不知道为什么,但是它起作用了。希望这会有所帮助。

答案 10 :(得分:0)

我遇到了同样的问题,我要做的就是在更新数据库后(通过Studio)删除迁移文件。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

我遇到了问题,原因是我有一个自定义控件的部分类

我不小心为部分

创建了一个.resx文件

我想我是通过在部分类上调整F7并生成空设计器表单来实现的。

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

希望这有帮助

答案 14 :(得分:0)

如果您在使用EntityFramework并尝试mylist.Select((a, b) => new { count = mylist.Where(c => c.Equals(a)).Count(), index = b }) .Where(e => e.count > 1).ToList().ForEach(f => dtLogData.Rows[f.index][ColCnt] = MyErrorString); 时出现此问题,则解决方案很简单:删除Add-Migration文件夹(在解决方案资源管理器中)并执行Migrations。如果需要,可以进行备份迁移。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

当我复制表单以重用大部分功能然后重命名表单时,发生了这种情况。我去了引用的目录,发现实际上只有一个文件,复制了有问题的文件,重命名为引用我的新表单的名称,然后将新文件粘贴回目录。

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

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

答案 17 :(得分:-1)

我在评论中确认了WimOmbelets的回答。当你在VS2012中重命名一个类时,这显然会发生(我之前的版本中从未有过这个)。

我不能确定这是原因,但我做的一件事与我的常规方法不同的是我使用 F2 重命名它而不是更改它然后按控制 -

答案 18 :(得分:-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时,我第一次看到这个错误。

答案 19 :(得分:-1)

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

我实际上有一个跨多个文件的部分类。这个类是一个表单类。这本身就是成功的,并没有引起问题。但是,这会导致新类保留其唯一文件名,同时保持拆分“类Form”代码。这很可能不是犹太教练习,但当时发生的事情就更少了。它似乎是一个很好的替代方案,可以解决大量混乱的代码。毋庸置疑,下次我会使用区域或其他替代方案。

当我尝试从第二个文件中获取代码并将其复制/粘贴到一个只有一个类的新非表单文件时出现错误,正如我原本打算将其转换为库并使代码变得有点更加正确和可读。由于我不确切知道是什么原因导致错误发生并且进行了大量的修改,因此需要一些时间来跟踪。即使在反转代码之后,我也设法错过了一对方法。

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

希望能帮到某人

答案 20 :(得分:-2)

当我使用Form重命名我的一个Ctrl + R + R类时,我遇到了同样的问题,VS提供了默认重命名的内容。

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

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

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

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