最近,我创造了新的Form
叫WorkersScreen
。当我尝试运行项目时,出现此错误:
错误1两个输出文件名解析为相同的输出路径:“ obj \ x86 \ Debug \ DryWash.WorkersScreen.resources”
它是什么意思,如何解决?
最近,我创造了新的Form
叫WorkersScreen
。当我尝试运行项目时,出现此错误:
错误1两个输出文件名解析为相同的输出路径:“ obj \ x86 \ Debug \ DryWash.WorkersScreen.resources”
它是什么意思,如何解决?
Answers:
如果两个.resx文件指向同一格式,则可能会发生这种情况。重命名表单时通常会发生(其他原因可能适用,我不确定)
如果您的特定表单文件如下所示:
Form1.cs
Form1.designer.cs
MyFormerFormName.resx
Form1.resx
那么通常意味着您已重命名表单,但Visual Studio并未删除旧的.resx文件。MyFormerFormName.resx
手动删除文件(在本示例中为)后,下一次构建时应消除该错误。
通过编辑项目文件查找重复项
注意.resx失败的名称。
首先通过右键单击项目然后单击卸载项目Unload Project
。
它将向您显示一些代码,(Search
在步骤1中为resx在文件中)查找重复值,在我的情况下看起来像这样
<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>
保存它,右键单击您的项目,然后单击重新加载项目。大功告成!
通常,如果您这样创建迁移
Add-Migration "UpdateProducts"
Visual Studio将使用类名UpdateProducts创建迁移。如果以后使用相同的迁移名称添加新的迁移,它将生成一个类名称为UpdateProducts1。的迁移,并自动在结尾添加一个递增的数字作为后缀。每次生成新迁移时,数量都会增加一个。
在我们的案例中,由于某种原因,VS感到困惑,并开始使用与现有迁移相同的类名来生成后续迁移,从而使两个自动生成的迁移具有相同的名称。
只需更改新迁移的类名即可解决问题。
确保您没有两个.resx
文件。在项目中查看YourServiceName.cs
。为我工作。
当我复制表单以重用大多数功能,然后重命名该表单时,这发生在我身上。我转到引用的目录,发现实际上只有一个文件,复制了该文件,将其重命名为引用我的新表单的名称,然后将新文件粘贴回该目录中。
我认为这不是一个好习惯(我是C#的新手),但它确实有效,而不必重新创建所有内容。在整个解决方案中,我还需要在几个地方更新表单名称,无论是原始表单还是新表单都令人惊讶。
复制表格似乎不是一个好主意。
这在我运行Add Migration
命令时发生了,并给我的项目名称和迁移类的名称相同。我删除了所有迁移类,并添加了一个新的类,再次构建了解决方案。
我以为遇到此错误后会在至少一个随机论坛上发帖,以期缓解其他人的问题。我搜索了许多Google网站,但都没有我的确切问题。我的原因相似,但在某些方面有所不同。
实际上,我有一个跨多个文件的局部类。此类是表单类。这本身就是成功的,并且没有引起任何问题。但是,这导致新类在保留拆分的“类窗体”代码的同时保留其唯一文件名。这很可能不是犹太实践,但当时却发生了。消除很多混乱的代码似乎是一个不错的选择。不用说,下一次我将仅使用区域或其他替代方法。
然后,当我尝试从第二个文件中获取代码并仅使用一个类将其复制/粘贴到新的非格式文件中时,便发生了错误,这是我原本打算将其转换为库并使代码更加正确且可读的。由于我不确切知道是什么原因导致错误发生,并且进行了少量更改,因此花了一些时间进行跟踪。即使在反转代码之后,我也仍然错过了两种方法。
主窗体的方法包含带有initializeComponent和Form构造函数(装入)的Form类。这些方法的第二个副本似乎导致相同的错误。即使删除了多余的代码,多余的表格和resx文件。我什至尝试删除合法的resx文件,因为并不需要它。我无法有效地跟踪它,因为任何错误都指向这些代码段的合法版本。Ctrl + F和备份副本是您的朋友。
希望能帮助到某人