Visual Studio 2012 не удается создать новый проект, который ссылается на другие проекты

У меня есть решение, которое работает уже несколько лет. Сегодня впервые за месяцы постоянной разработки пошел добавлять новый проект. Все было хорошо и закодировано. Пошел строить и обнаружил, что не может найти ни одной из ссылок на проект, которые я добавил.

Не удалось найти имя типа или пространства имен «blah» (вам не хватает директивы using или ссылки на сборку?)

Эти ссылки относятся к проектам в одном и том же решении, и подтверждено, что они являются ссылками на проекты в файле CSPROJ. У Visual Studio нет проблем с поиском ссылки, потому что я могу отлично кодировать объекты, на которые есть ссылки. Только когда я строю, у меня возникают проблемы. В настоящее время делаю отладку с AnyCPU.

Выполняя поиск в Google, я продолжал находить идеи о том, что проблема может заключаться в том, что целевой платформой является клиентский профиль .NET 4 либо в моем новом проекте, либо в ссылках. Однако, это не так. Все проекты .NET 4, а не профиль клиента (я проверил). Еще более странно то, что все эти ссылки прекрасно работают в существующих проектах.

Я могу заставить его собраться, если создам новый проект .NET 4.5, что заставляет меня думать, что что-то не так с моей целевой структурой .NET 4. В настоящее время я потерян и не знаю, что делать.

Ниже файл проекта. Мне пришлось очистить имена файлов и имена проектов.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.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>{48AED04F-6928-45F4-8C1D-A5E6713B5120}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>MyNamespace</RootNamespace>
    <AssemblyName>MyNamespace</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\Build\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </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>
    <Prefer32Bit>false</Prefer32Bit>
  </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="SomeFileThatReferences.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Ref1.csproj">
      <Project>{6E0EEABF-52D7-4020-9242-AFDC33B5DAA0}</Project>
      <Name>Billing.Bills</Name>
    </ProjectReference>
    <ProjectReference Include="..\Ref2.csproj">
      <Project>{6764A403-DA4C-42FF-A89F-E1EEA7FEF0A3}</Project>
      <Name>Billing.Business</Name>
    </ProjectReference>
    <ProjectReference Include="..\Ref3.csproj">
      <Project>{9D9AB79F-D52A-4EC8-B2B7-9C605EFDBFDE}</Project>
      <Name>Billing.Reports</Name>
    </ProjectReference>
    <ProjectReference Include="..\Csla\Csla.Net4\Csla.Net4.csproj">
      <Project>{1FCE45FF-C391-4ED1-A9C4-F71CAF8773E6}</Project>
      <Name>Csla.Net4</Name>
    </ProjectReference>
    <ProjectReference Include="..\Ref4.csproj">
      <Project>{3972242B-DF6A-4B9B-9121-6138090CA114}</Project>
      <Name>Core</Name>
    </ProjectReference>
  </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>

Заранее спасибо за любые ответы/предложения.


person TyCobb    schedule 26.07.2013    source источник
comment
Судя по тому, что я тестировал до сих пор, 2012 год не поддерживает фреймворк 4.0... Я могу ошибаться, я еще не все пробовал...   -  person legrandviking    schedule 26.07.2013
comment
это странно. Похоже, что файлы, на которые ссылаются, будут .NET 4.5.   -  person Jonesopolis    schedule 26.07.2013
comment
@legrandviking - VS 2012 наверняка поддерживает 4.0   -  person EkoostikMartin    schedule 26.07.2013
comment
Я очень сомневаюсь, что 2012 год не поддерживает 4.0, учитывая, что все наши проекты здесь в 4.0, а половина наших разработчиков работает в 2012 году.   -  person Logarr    schedule 26.07.2013


Ответы (2)


Догадаться. Видимо, я пропустил ссылку, которая была неизвестна мне. Все остальные проекты ссылались на пакет Microsoft BCL Portability Pack. Как только я увидел, что в NuGet и во всех проектах это было, кроме нового, я сразу на это сослался, и теперь все собирается.

Это была веселая охота за привидениями.

person TyCobb    schedule 26.07.2013

Еще одна причина этой досадной ошибки. Обнаружил это, просмотрев предупреждающие сообщения. Сообщения об ошибках при сборке не давали необходимой информации:

Предупреждение 6. Первичная ссылка "C:..path-to-you-solution-ref.dll" не может быть разрешена, так как она была создана для платформы ".NETFramework,Version=v4.5.1". . Это более поздняя версия, чем текущая целевая платформа ".NETFramework,Version=v4.5".

Поскольку я нахожусь на чистой установке VStudio, похоже, что проект по умолчанию еще не установлен на более высокую версию, как это было у меня. Таким образом, несоответствие версий (ссылка на более высокую версию от более низкой) сделает это.

person Nicholas Petersen    schedule 05.05.2014