"Include in Project" Visual Studio 2013 中数据集的奇怪行为
"Include in Project" strange behavior for dataset in VisualStudio 2013
我想做一件非常简单的事情:将 VS13 中的一些代码从一个项目移到另一个项目中,我正面临数据集的奇怪问题。为简单起见,假设在我的源项目中我有一个名为 MyDataSet
的数据集,它由 5 个文件组成:MyDataSet.cs
、MyDataSet.Designer.cs
、MyDataSet.xsc
、MyDataSet.xsd
、MyDataSet.xss
.
然后我使用标准 windows 功能将这些文件复制到我的目标项目文件夹,并使用 VS13 中的 Include in Project
菜单选项。之后我看到添加了一个额外的文件:MyDataSet1.Designer.cs
.
我尝试检查 cproj
个文件,但它们不同。
来源(仅显示与目标不同的部分):
<Compile Include="MyDataSet.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MyDataSet.xsd</DependentUpon>
</Compile>
<None Include="MyDataSet.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>MyDataSet.Designer.cs</LastGenOutput>
</None>
目标(仅显示与源不同的部分):
<Compile Include="MyDataSet.Designer.cs">
<DependentUpon>MyDataSet.cs</DependentUpon>
</Compile>
<Compile Include="MyDataSet1.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MyDataSet.xsd</DependentUpon>
</Compile>
<None Include="MyDataSet.xsd">
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>MyDataSet1.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</None>
我还注意到,在 MyDataSet.cs
和 MyDataSet1.Designer.cs
中,名称空间会自动更改为正确的名称。
我正在使用 ReSharper,起初我认为这可能是一个原因,但我 disabled ReSharper 并且相同的行为继续发生。
也许我可以通过删除新创建的文件并修改 cproj
文件来解决这个问题,但实际上我需要复制很多数据集,我真的不喜欢那种工作。
是否有人知道此类问题的原因是什么以及如何解决?
通过右键单击解决方案资源管理器中的数据集根节点(通常是 .xsd)从 Visual Studio 中移动数据集并 selecting 复制,然后右键单击目标项目或项目文件夹和 select 粘贴。这应该复制文件并正确标记 csproj 文件。
像您一样使用 windows 功能复制文件。但是,不要使用 "Include in Project" 在记事本中手动编辑新的 .csproj 文件,以包含与旧的 .csproj 文件中完全相同的行。然后,当您的项目刷新时,您应该已经准备就绪。
我想做一件非常简单的事情:将 VS13 中的一些代码从一个项目移到另一个项目中,我正面临数据集的奇怪问题。为简单起见,假设在我的源项目中我有一个名为 MyDataSet
的数据集,它由 5 个文件组成:MyDataSet.cs
、MyDataSet.Designer.cs
、MyDataSet.xsc
、MyDataSet.xsd
、MyDataSet.xss
.
然后我使用标准 windows 功能将这些文件复制到我的目标项目文件夹,并使用 VS13 中的 Include in Project
菜单选项。之后我看到添加了一个额外的文件:MyDataSet1.Designer.cs
.
我尝试检查 cproj
个文件,但它们不同。
来源(仅显示与目标不同的部分):
<Compile Include="MyDataSet.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MyDataSet.xsd</DependentUpon>
</Compile>
<None Include="MyDataSet.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>MyDataSet.Designer.cs</LastGenOutput>
</None>
目标(仅显示与源不同的部分):
<Compile Include="MyDataSet.Designer.cs">
<DependentUpon>MyDataSet.cs</DependentUpon>
</Compile>
<Compile Include="MyDataSet1.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MyDataSet.xsd</DependentUpon>
</Compile>
<None Include="MyDataSet.xsd">
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>MyDataSet1.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</None>
我还注意到,在 MyDataSet.cs
和 MyDataSet1.Designer.cs
中,名称空间会自动更改为正确的名称。
我正在使用 ReSharper,起初我认为这可能是一个原因,但我 disabled ReSharper 并且相同的行为继续发生。
也许我可以通过删除新创建的文件并修改 cproj
文件来解决这个问题,但实际上我需要复制很多数据集,我真的不喜欢那种工作。
是否有人知道此类问题的原因是什么以及如何解决?
通过右键单击解决方案资源管理器中的数据集根节点(通常是 .xsd)从 Visual Studio 中移动数据集并 selecting 复制,然后右键单击目标项目或项目文件夹和 select 粘贴。这应该复制文件并正确标记 csproj 文件。
像您一样使用 windows 功能复制文件。但是,不要使用 "Include in Project" 在记事本中手动编辑新的 .csproj 文件,以包含与旧的 .csproj 文件中完全相同的行。然后,当您的项目刷新时,您应该已经准备就绪。