csproj中的错误 - 重复项目

时间:2010-12-27 15:34:41

标签: visual-studio-2010 msbuild projects-and-solutions

我在visual studio 2010中遇到错误:

  

错误1在“Sources”参数中多次指定“CrossDomainService.svc.cs”项。 “Sources”参数不支持重复项。 WcfServiceDomain

来自msbuild

  

C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.CSharp.targets(160,9)   :错误MSB3105:项目“CrossDomainService.svc.cs”被指定为o以上   nce在“Sources”参数中。 “Sources”参数不支持重复项。 [C:\的Inetpub \ wwwroot的\ axaptaWcfConnection \ WcfServiceDomain \ WcfSer   viceDomain.csproj]

我的文件是csproj:

    <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>
    </ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{8D40933A-E036-4CD0-9003-314A692724D5}</ProjectGuid>
    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>WcfServiceDomain</RootNamespace>
    <AssemblyName>WcfServiceDomain</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <TargetFrameworkProfile />
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>
    <OldToolsVersion>4.0</OldToolsVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <PlatformTarget>x86</PlatformTarget>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System.Web.ApplicationServices" />
    <Reference Include="System.Web.DynamicData" />
    <Reference Include="System.Web.Entity" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.EnterpriseServices" />
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.ServiceModel" />
    <Reference Include="System.ServiceModel.Web" />
    <Reference Include="System.Web.Services" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="ClientAccessPolicy.xml" />
    <Content Include="CrossDomainService.svc" />
    <Content Include="Service1.svc" />
    <Content Include="Web.config">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Web.Debug.config">
      <DependentUpon>Web.config</DependentUpon>
    </Content>
    <Content Include="Web.Release.config">
      <DependentUpon>Web.config</DependentUpon>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="CrossDomainService.svc.cs">
      <DependentUpon>CrossDomainService.svc</DependentUpon>
    </Compile>
    <Compile Include="ICrossDomainService.cs" />
    <Compile Include="Service1.svc.cs">
      <DependentUpon>Service1.svc</DependentUpon>
    </Compile>
    <Compile Include="IService1.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
        <WebProjectProperties>
          <UseIIS>False</UseIIS>
          <AutoAssignPort>True</AutoAssignPort>
          <DevelopmentServerPort>51421</DevelopmentServerPort>
          <DevelopmentServerVPath>/</DevelopmentServerVPath>
          <IISUrl>
          </IISUrl>
          <NTLMAuthentication>False</NTLMAuthentication>
          <UseCustomServer>False</UseCustomServer>
          <CustomServerUrl>
          </CustomServerUrl>
          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
</Project>

我没有看到任何重复:/这个错误的任何想法?

16 个答案:

答案 0 :(得分:92)

我在解决方案中面临同样的问题,其中一个源文件

出现相同的错误

我按如下方式解决了这个问题,

  1. 检查给出错误的文件名。

  2. 找出文件所在的项目。

  3. 打开该特定项目的.csproj文件(此文件可在放置解决方案的目录中找到)。

  4. 搜索.csproj文件中引发错误的文件名。

  5. 您会找到该行的两个条目,例如

  6.  <Compile Include="duplicate.aspx.cs">
          <SubType>ASPXCodeBehind</SubType>
          <DependentUpon>Duplicate.aspx</DependentUpon>
        </Compile>
    
    
     <Compile Include="duplicate.aspx.cs">
          <SubType>ASPXCodeBehind</SubType>
          <DependentUpon>Duplicate.aspx</DependentUpon>
        </Compile>
    
    1. 从其中一行中删除任意一行。

    2. 保存更改。

    3. 重新加载项目,您的错误肯定已经消失。

答案 1 :(得分:5)

对于遇到相同问题的人,没有任何帮助他们,他们不想重新创建项目:尝试删除YourPojectName.csproj.user文件。它帮助了我。我之前手动修改了.csproj,并且引入了修改(不知何故)可能与这两个文件存在一些差异。

答案 2 :(得分:4)

您可以在常规文本编辑器中打开解决方案并手动删除重复

答案 3 :(得分:2)

我想我不久前遇到了同样的问题。 解决方案是从web.config中删除子类型,即:

<Content Include="Web.config">
  <SubType>Designer</SubType>
</Content>

要:

<Content Include="Web.config">
</Content>

现在,那些已经再次添加,我不知道为什么。搜索更多信息尚未清除。 看到: <Subtype>Designer</Subtype> Added then removed by Visual Studio on load/unload

答案 4 :(得分:2)

轻松! 恰好在您的项目中使用clic并选择&#34;卸载项目&#34;

再次右clic和edir your_project.csproj

在重复的标记中搜索错误消息中提到的文件。

保存并右键选择&#34;重新加载项目&#34;

Right click

答案 5 :(得分:1)

我遇到了同样的问题,解决方法是缩短和清理目录名称(它是备份名称,日期和时间用分号分隔)。

答案 6 :(得分:1)

使用文本编辑器打开文件WcfServiceDomain.csproj,然后查找CrossDomainService.svc.cs

它可能会在那里两次。只需删除其中一行,项目即可再次使用。

答案 7 :(得分:1)

通配符!

从cproj文件中查看以下示例。 Class.cs Include已由其下面的通配符Include处理,因此Include已被删除两次。您显然想丢失特定的Class.cs Include

<Compile Include="..\Folder\Class.cs">
  <Link>Class.cs</Link>
</Compile>

<!-- lots of things in between ...scroll scroll scroll -->

<Compile Include="..\Folder\*.*">
  <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

答案 8 :(得分:0)

我不得不从项目中删除该类并再次重新创建它以解决此问题。

答案 9 :(得分:0)

我解决这个问题的方法是转到错误中包含文件的位置,发现有两个相同的文件。删除其中一个,它应该工作。

之后我不得不撤消挂起的更改,因为文件随后丢失了,但重新构建后它才有效。

答案 10 :(得分:0)

我所做的是我重命名了相关文件。然后清理解决方案(通过单击Build&gt; Clean Solution)。然后构建解决方案。

然后将文件重命名为原始文件名。然后清理解决方案并再次构建解决方案。

它对我有用。我不知道它是否适合你。

答案 11 :(得分:0)

对我来说,我卸载了项目, 编辑.csproj文件, 搜索错误显示的文件名

&#13;
&#13;
<ItemGroup>
    <Compile Include="Controllers\BaseUserContext.cs" />
</ItemGroup>
&#13;
&#13;
&#13;

它没有多次显示(BaseUserContext.cs),只有1个标签,所以我将其删除并且没有错误。

答案 12 :(得分:0)

我知道这是旧帖子,但是我发现了这种更好的解决方案,可以帮助当前遇到此问题的其他人。

  • return <div className={`now it ${works}`}> Hello World </div> 中,选择错误中指定的文件 消息或包含这些文件的文件夹。

  • Solution Explorer,然后选择Right-click

  • 单击Exclude From Project按钮。

  • 再次选择文件或文件夹,Refresh,然后选择right-click

enter image description here

答案 13 :(得分:0)

错误消息中的主要线索是-“来源”。 .csproj文件中的配置错误,构建目标已导入两次。它通常在导入下位于.csproj文件的末尾。文件名有点误导,我在寻找文件名时,在整个项目文件中只能找到一次。当我查看导入内容时,我已经与此类似;

<Import Project="..\..\LonestarWeb\packages\Telerik.Sitefinity.Feather.10.2.6651\build\Telerik.Sitefinity.Feather.targets" Condition="Exists('..\..\LonestarWeb\packages\Telerik.Sitefinity.Feather.10.2.6651\build\Telerik.Sitefinity.Feather.targets')" />
<Import Project="\packages\Telerik.Sitefinity.Feather.10.2.6651\build\Telerik.Sitefinity.Feather.targets" Condition="Exists('..\..\LonestarWeb\packages\Telerik.Sitefinity.Feather.10.2.6651\build\Telerik.Sitefinity.Feather.targets')" />  

删除不需要的那个。重新加载解决方案,您现在可以进行编译。

答案 14 :(得分:0)

我有一个类似的问题。我第一次在机器上打开了一个已经存在的VS解决方案。此VS解决方案不是由人为创造的,而是使用Swagger-Editor从openAPI规范生成的。

最初,该解决方案根本没有任何问题。我可以构建解决方案,也可以运行代码。我将新类添加到解决方案的任何项目中后,实际的问题就出现了(只是:“右键单击”>“添加”>“新项目”>“类”)。无论我为新类选择什么名称,我总是会遇到编译器错误

在“ Sources”参数中多次指定了“ MyNewClass.cs”项。 “来源”参数不支持重复项。

我删除课程后,一切都恢复正常。

除了VS之外,我的机器上还有JetBrains Rider(2020.1)。因此,我在Rider中打开了相同的解决方案,并添加了一个新类。在Rider中,未出现错误。我可以根据需要添加任意多个类。

最后,它归结为通配符,因为上面的答案中已经提到了“ CAD bloke”。

上述Swagger-Editor生成的原始解决方案的.csproj文件中包含以下XML:

  <ItemGroup>
    <Compile Include="**\*.cs" Exclude="obj\**" />
  </ItemGroup>

如果我使用VS添加一个新类,它将变成这个,进而导致错误:

  <ItemGroup>
    <Compile Include="**\*.cs" Exclude="obj\**" />
    <Compile Include="Api\NewClass.cs" />
  </ItemGroup>

VS无法识别使用的通配符。如果我使用Rider添加类,则不会添加其他<Compile Include="Api\NewClass.cs" />。骑士知道通配符!

JetBrains的家伙似乎比Microsoft更擅长处理Microsoft的csproj格式。

如何解决此问题

最终要解决此问题,我从项目中排除了所有源文件(“右键单击”>“从项目中排除”)。然后,我关闭了解决方案,并在文本编辑器中打开了.csproj文件。我从.csproj文件中删除了<Compile Include="**\*.cs" Exclude="obj\**" />。删除该行之后,我在VS中再次打开了解决方案,并再次包含了所有源文件(“显示所有文件”(在解决方案资源管理器中)>“右键单击”>“包含在项目中”)。 现在,所有文件都定义为

,而不是单个通配符。
  <ItemGroup>
    <Compile Include="Api\NewClass.cs" />
    <Compile Include="Api\SecondClass.cs" />
    <Compile Include="Api\ThirdClass.cs" />
    ...
  </ItemGroup>

.csproj文件中。

如果您想自己复制此内容

  1. 访问:https://swagger.io/tools/swagger-editor/
  2. 点击“实时演示”
  3. “生成客户端”>“ csharp”
  4. 上面的步骤使用VS解决方案下载一个zip文件
  5. 使用VS打开解决方案并添加一个类
  6. 添加类后,您应该会遇到错误(除非您使用过Rider)

答案 15 :(得分:-1)

只有解决方案是重新创建项目:/