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

use*_*523 61 .net c#

我正在开发用于.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
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

Wim*_*ets 78

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

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

Form1.cs
Form1.designer.cs
MyFormerFormName.resx
Form1.resx
Run Code Online (Sandbox Code Playgroud)

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

  • 同样重新打开项目并从解决方案资源管理器中删除MyFormerFormName.resx,它仍可能被Visual Studio引用.这通常对我有用. (7认同)

Car*_*doc 31

截至16年8月3日这个工作对我来说!

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

在此输入图像描述

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

在此输入图像描述

它将显示一些代码,查找重复值,在我的情况下看起来像这样

<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>
Run Code Online (Sandbox Code Playgroud)

注意这一部分,它是重复的!

<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)

删除其中一个,使它看起来像这样

<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>
Run Code Online (Sandbox Code Playgroud)

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

  • 这正是我所做的,并且效果非常好! (2认同)
  • 如果我找不到任何重复项,我该怎么办?我用错误中的文件名尝试了 Ctrl+F,但似乎没有任何重复项。 (2认同)

spa*_*ves 7

通常,如果您创建这样的迁移

Add-Migration "UpdateProducts"
Run Code Online (Sandbox Code Playgroud)

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

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

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


Aar*_*ide -2

我确认 WimOmbelets 在评论中给出的答案。当您在 VS2012 中重命名一个类时,显然会发生这种情况(我在以前的版本中从未遇到过这种情况)。

我不能确定这就是原因,但我做的一件事与正常方式不同,我使用F2对其进行重命名,而不是更改它然后按control-。