none
VS2010,VS2013针对不同解决方案中同名类库引用时处理方式不同,为何?? RRS feed

  • 问题

  • 在VS2010中,如果引用不同解决方案文件夹中同名的类库,一切正常,但是在VS2013中同样的操作,会报告已存在组件引用,不知为何?。如下图所示:

    vs2010:

    <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{FDFD87DA-77A4-48F7-BB02-BAAC2E791EE7}</Project>
          <Name>ClassLibrary1 %28AA\ClassLibrary1%29</Name>
        </ProjectReference>
        <ProjectReference Include="..\BB\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{07BF6C96-09C6-4319-B163-739A77C2FDFD}</Project>
          <Name>ClassLibrary1 %28BB\ClassLibrary1%29</Name>
        </ProjectReference>
      </ItemGroup>

    vs2013:

     <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{11effe5c-7579-4891-a14c-df038b78b054}</Project>
          <Name>ClassLibrary1</Name>
        </ProjectReference>
      </ItemGroup>


    做一名合格的中国人!


    2014年8月27日 7:04

全部回复

  • 你好,

    我也装了VS2010但是没有重现这个问题:

    我用了VS2010和VS2013都不能像你这样重现出来,难道是特别的设置问题?据我所知VS2010在Setup Project里面是没有重名检测的,然后我觉得你这边最好还是不要用重名来命名了,这样的项目本来看起来就比较容易混淆。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2014年8月28日 10:22
  • 同志,你好:

        问题是在VS2013里出现的,在VS2010中是正常的,我升级到VS2013时才发现的。通过对两个版本项目模板中的

    <ItemGroup>内容比较发现其<Name>属性是有差异的。提问贴中的第一个截图是VS2010对不同解决方案文件夹中同名的类库引用正常后的截图;第二个截图是在VS2013中同样的操作时,提示的错误信息,从提示信息及<ItemGroup>的差异看,在VS2013中,<Name>属性的生成规则似乎有变,也因此导致在VS2013中不能引用不同解决方案文件夹中的同名类库,为何?????

    为何?????

    PS:我是基于GAX/GAT做的一个扩展包,支持框架搭建,代码生成,代码分析,工程发布等的一个小工具。在VS2008,VS2010中都是正常使用的。

    SOSOSSOSOOSOSOSOSO。。。。。

    感谢您的反馈,期待跟进确认,谢谢。


    做一名合格的中国人!

    2014年8月29日 1:12
  • 你好,

    我又仔细试了一下这个问题,似乎确实是VS2013本身的问题,其实在添加Library的时候就已经显示不能同名了,但是VS2010里面确实没有这个检测,而VS2013有,看这里

    http://stackoverflow.com/questions/20150496/reference-could-not-be-added-because-of-same-name

    还有这个报错的地址:

    https://connect.microsoft.com/VisualStudio/feedback/details/809484/bug-when-adding-references-to-projects-with-same-project-names

    实话讲相对于来继续汇报这个问题,我建议你还是想想你的具体问题是什么然后咱们想一个解决方案出来现实一点。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月1日 9:50
  • 如果方便,请邮件联系:

    jiangshaofen@Hotmail.com

    谢谢。


    做一名合格的中国人!

    2014年9月3日 5:37
  • 我的场景描述:在自动生成项目结构时,会自动添加各自的引用,其中有个CORE/COMMON的共用项目,在VS2010中生成的截图如下,

    VS2010下生成的项目组织结构图具体是由一个下执行时,报告错误如下:

    Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe CreateModule. Error was: Action AddCoreReferenceToBusinessLogicProject failed to execute:
    项目中已存在对组件“Common”的引用。.
    You can remove the reference to this recipe through the Guidance Package Manager. ---> System.Runtime.InteropServices.COMException: 项目中已存在对组件“Common”的引用。
       在 VSLangProj.References.AddProject(Project pProject)
       在 Microsoft.Practices.RecipeFramework.Extensions.Actions.VisualStudio.AddProjectReferenceAction.Execute()
       在 Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName, Dictionary`2 inputValues)
       在 Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName)
       在 Microsoft.Practices.RecipeFramework.Extensions.Coordinators.ConditionalCoordinator.Run(Dictionary`2 declaredActions, XmlElement coordinationData)
       在 Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
       --- 内部异常堆栈跟踪的结尾 ---
       在 Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
       在 Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
       在 Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
       在 Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
       在 Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(IAssetReference reference)
       在 Microsoft.Practices.RecipeFramework.RecipeReference.OnExecute()
       在 Microsoft.Practices.RecipeFramework.AssetReference.Execute()
       在 Microsoft.Practices.RecipeFramework.VisualStudio.RecipeMenuCommand.OnExec()
       在 Microsoft.Practices.RecipeFramework.VisualStudio.AssetMenuCommand.Invoke()

    综上所述,我特别做了提问中的场景重现模拟,确认这个问题不是我的代码问题。

    HELP ME??!!


    做一名合格的中国人!

    2014年9月3日 11:42
  • HI:

    这个问题至今还在困扰着我,安装了2013 UP4后,问题依旧,在不改变原有代码的前提下,可有好的方案呢?


    做一名合格的中国人!

    2015年3月31日 1:48
  • 請問兩個同名的項目,Namespace也是一樣嗎?

    你可以試試改在原項目中的properties,把output filename成為 namespace.projectName

    或用notepad 打開 AA\ClassLibrary1\ClassLibrary1.csproj 和 BB\ClassLibrary1\ClassLibrary1.csproj ,貼上來看看


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆標示為解答以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to clickMark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.


    2015年3月31日 4:10
  • 两个文件除了 ProjectGuid 不同,其他都一样的,只是两个类库放在不AA,BB两个方案文件夹内而已。

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProjectGuid>{11EFFE5C-7579-4891-A14C-DF038B78B054}</ProjectGuid>
        <OutputType>Library</OutputType>
        <AppDesignerFolder>Properties</AppDesignerFolder>
        <RootNamespace>ClassLibrary1</RootNamespace>
        <AssemblyName>ClassLibrary1</AssemblyName>
        <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        <FileAlignment>512</FileAlignment>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <DefineConstants>TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
      </PropertyGroup>
      <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Core" />
        <Reference Include="System.Xml.Linq" />
        <Reference Include="System.Data.DataSetExtensions" />
        <Reference Include="Microsoft.CSharp" />
        <Reference Include="System.Data" />
        <Reference Include="System.Xml" />
      </ItemGroup>
      <ItemGroup>
        <Compile Include="Class1.cs" />
        <Compile Include="Properties\AssemblyInfo.cs" />
      </ItemGroup>
      <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
      <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
           Other similar extension points exist, see Microsoft.Common.targets.
      <Target Name="BeforeBuild">
      </Target>
      <Target Name="AfterBuild">
      </Target>
      -->
    </Project>


    做一名合格的中国人!

    2015年4月2日 4:06
  • 这个是两个版本同样动作产生的差异,特别是按个%28 %29我看了,似乎是固定格式的数字(暂不不理解):

    vs2010:

    <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{FDFD87DA-77A4-48F7-BB02-BAAC2E791EE7}</Project>
          <Name>ClassLibrary1 %28AA\ClassLibrary1%29</Name>
        </ProjectReference>
        <ProjectReference Include="..\BB\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{07BF6C96-09C6-4319-B163-739A77C2FDFD}</Project>
          <Name>ClassLibrary1 %28BB\ClassLibrary1%29</Name>
        </ProjectReference>
      </ItemGroup>

    vs2013:

     <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{11effe5c-7579-4891-a14c-df038b78b054}</Project>
          <Name>ClassLibrary1</Name>
        </ProjectReference>
      </ItemGroup>


    做一名合格的中国人!

    2015年4月2日 4:07
  • Namespace 不一样,程序集名称也不一样。

    做一名合格的中国人!

    2015年4月2日 4:47
  • 经多次比较确认,问题就是VS2013在引用时 <name>生成的问题,和之前的版本有差异。从两个版本的生成文件可看出。

    vs2010:

    <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{FDFD87DA-77A4-48F7-BB02-BAAC2E791EE7}</Project>
          <Name>ClassLibrary1 %28AA\ClassLibrary1%29</Name>
        </ProjectReference>
        <ProjectReference Include="..\BB\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{07BF6C96-09C6-4319-B163-739A77C2FDFD}</Project>
          <Name>ClassLibrary1 %28BB\ClassLibrary1%29</Name>
        </ProjectReference>
      </ItemGroup>

    vs2013:

     <ItemGroup>
        <ProjectReference Include="..\AA\ClassLibrary1\ClassLibrary1.csproj">
          <Project>{11effe5c-7579-4891-a14c-df038b78b054}</Project>
          <Name>ClassLibrary1</Name>
        </ProjectReference>
      </ItemGroup>

    因此会报告同名引用已存在。

    另阁下说的“你可以試試改在原項目中的properties,把output filename成為 namespace.projectName”,在下愚钝,没能找到,请明示,谢谢。


    做一名合格的中国人!

    2015年4月2日 5:01