2010-10-08 1 views
2

По какой-то причине, я должен переместить много C# код с Visual Studio 2010 в Visual Studio 2008.Проблема понижая от C# 2010 до 2008

Я отредактировал мой SLN файл, чтобы отразить изменения

Microsoft Visual Studio Solution File, Format Version 11.00 

к

Microsoft Visual Studio Solution File, Format Version 10.00 

Это позволило раствор должен быть загружен в VS2008. После этого я редактировал каждый csproj целевого Рамочную .NET 3.5

Это позволило проектам компилировать

Я могу запустить его в режиме Release «правильно» (с некоторыми ошибками из-за изменения в .NET 4.0 Специфических до 3.5 эквивалент)

Теперь я получил следующее сообщение об ошибке в режиме отладки alt text

Моего Google фу показал, что я мог ввернуть реестр при поиске «Приложение, которое вы пытаетесь отлаживать использует версию». Он указал мне на this page

Я уверен, что на этой странице есть ошибка, где она относится к 8.0 для страниц справки 2005 и 2008 годов. Так что я сделал это, я создал ключ реестра CLRVersionForDebugging со значением «v3.5» так же, как каталог в C:\Windows\Microsoft.NET\Framework показывает

Теперь я получаю следующее сообщение: alt text

Я не могу найти соответствующую информацию решите эту проблему. Это огромная боль. Я не хочу воссоздавать проекты вручную, есть сотни исходных/конфигурационных файлов. Любая помощь будет принята с благодарностью.

Ниже приведен пример файла проекта, который не будет отлаживать

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 
    <ProductVersion>9.0.21022</ProductVersion> 
    <SchemaVersion>2.0</SchemaVersion> 
    <ProjectGuid>{61547F81-8F73-4E38-ACDB-B51253A90EBC}</ProjectGuid> 
    <OutputType>WinExe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>FlowchartEditor</RootNamespace> 
    <AssemblyName>FlowchartEditor</AssemblyName> 
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 
    <TargetFrameworkProfile> 
    </TargetFrameworkProfile> 
    <FileAlignment>512</FileAlignment> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <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|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <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"> 
     <RequiredTargetFramework>3.5</RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Xml.Linq" /> 
    <Reference Include="System.Data.DataSetExtensions" /> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Deployment" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Windows.Forms" /> 
    <Reference Include="System.Xml" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="Editor.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="Editor.Designer.cs"> 
     <DependentUpon>Editor.cs</DependentUpon> 
    </Compile> 
    <Compile Include="EditorMDI.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="EditorMDI.Designer.cs"> 
     <DependentUpon>EditorMDI.cs</DependentUpon> 
    </Compile> 
    <Compile Include="OutputSignalSelect.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="OutputSignalSelect.Designer.cs"> 
     <DependentUpon>OutputSignalSelect.cs</DependentUpon> 
    </Compile> 
    <Compile Include="Program.cs" /> 
    <Compile Include="PropertiesEditor.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="PropertiesEditorDisplayUnit.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    <Compile Include="ToolboxForm.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="ToolboxForm.Designer.cs"> 
     <DependentUpon>ToolboxForm.cs</DependentUpon> 
    </Compile> 
    <EmbeddedResource Include="Editor.resx"> 
     <DependentUpon>Editor.cs</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <EmbeddedResource Include="EditorMDI.resx"> 
     <DependentUpon>EditorMDI.cs</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <EmbeddedResource Include="OutputSignalSelect.resx"> 
     <DependentUpon>OutputSignalSelect.cs</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <EmbeddedResource Include="PropertiesEditor.resx"> 
     <DependentUpon>PropertiesEditor.cs</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <EmbeddedResource Include="Properties\Resources.resx"> 
     <Generator>ResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.cs</LastGenOutput> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <Compile Include="Properties\Resources.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Resources.resx</DependentUpon> 
     <DesignTime>True</DesignTime> 
    </Compile> 
    <EmbeddedResource Include="ToolboxForm.resx"> 
     <DependentUpon>ToolboxForm.cs</DependentUpon> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <None Include="app.config" /> 
    <None Include="Properties\Settings.settings"> 
     <Generator>SettingsSingleFileGenerator</Generator> 
     <LastGenOutput>Settings.Designer.cs</LastGenOutput> 
    </None> 
    <Compile Include="Properties\Settings.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Settings.settings</DependentUpon> 
     <DesignTimeSharedInput>True</DesignTimeSharedInput> 
    </Compile> 
    </ItemGroup> 
    <ItemGroup> 
    <ProjectReference Include="..\flowchart\flowchart\flowchart\flowchart.csproj"> 
     <Project>{4E7DDA00-651D-4CC0-833C-83E60ADE552B}</Project> 
     <Name>flowchart</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\PluginMiddleMan\PluginMiddleMan.csproj"> 
     <Project>{CDACB6A0-6DEC-48B6-B3B1-628968B50F5C}</Project> 
     <Name>PluginMiddleMan</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\ToolBox\ToolBox.csproj"> 
     <Project>{D937E1F4-1B9F-4567-B28E-EED24AA31C9C}</Project> 
     <Name>ToolBox</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\WinFormsUI\WinFormsUI.csproj"> 
     <Project>{C75532C4-765B-418E-B09B-46D36B2ABDB1}</Project> 
     <Name>WinFormsUI</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> 
+1

Вы знаете, что вы можете нацелить меняющиеся FW в VS2010 вправо ... в VS2008, если на то пошло. Попытка понять, почему вы возвращаетесь к VS2008. –

+1

Он может быть членом команды, и он единственный пользователь 2010 года. Это может быть проблематично. –

+0

Да, Майк, это именно причина. Я errr ... «нашел» VS2010 iso, когда я приехал, но все использовали 2008. Они сказали мне, что они будут мигрировать в конце концов, но теперь у них, похоже, нет надлежащего финансирования, чтобы сделать ход. – Eric

ответ

1

У вас возникла такая же проблема, если вы начинаете новый тестовый проект в VS2008 и отлаживаете? Если нет, то, возможно, вам будет лучше создавать новые файлы csproj и перетаскивать существующие файлы кода в новый проект.

Лично, если ваша установка на визуальной студии стабильна (othe проекты r2008 строятся нормально), я предпочел бы пойти по этому маршруту, чтобы скрыть глобальное состояние в вашем реестре.

+0

Я знаю, но у меня около 175 исходных файлов в 15 проектах с зависимостями и настраиваемыми путями построения и другими вещами, такими как что. Это будет огромная боль. – Eric

+0

Кроме того, нет, у меня нет проблем с решением ванили. Однако решение для реестра никогда не работает ни при каких обстоятельствах, которые я пробовал – Eric

+0

@ Эрик: не похоже на забаву - вы нашли решение еще? Я бы все же склонялся к перестройке - это боль, но вы можете массово добавлять свои файлы в свои проекты, перетаскивая их из Windows Explorer в Обозреватель решений. Остальные (пользовательские пути/пользовательские действия) могут занять хорошую половину дня или дня, чтобы закончить работу, но потом все готово, и вы знаете, что у вас есть, и вы знаете, что этот процесс будет работать. Только мои 0,02 доллара. В любом случае, наилучшие пожелания. – JMarsch

1

Изменились вы в «ToolsVersion» на тол из .csproj файлов? Может быть полезно опубликовать пример одного из файлов проекта.

+0

Да, я сделал, никакого эффекта. Я думаю, это тоже не повредило, спасибо за предложение =) – Eric

1

На моем VS 2008 SP1 install, у меня есть и AD7Metrics, и AD7Metrics(Debug) ключей под HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0. AD7Metrics действительно содержит {449EC4CC-30D2-4032-9256-EE18EB41B62B}. AD7Metrics(Debug) нет.

Попробуйте создать подраздел {449EC4CC-30D2-4032-9256-EE18EB41B62B} и его значение CLRVersionForDebugging под AD7Metrics(Debug).

+0

Хорошая догадка, но это не сработало – Eric

0

Проверьте содержимое файла app.config в своем проекте. Он может содержать <requiredRuntime> или <supportedRuntime> элементы, предназначенные для .NET 4, которые, вероятно, путают отладчик.

EDIT: Избавьтесь от значений CLRVersionForDebugging. Цель состоит в том, чтобы воспроизвести первое сообщение об ошибке (у меня плохое отношение ко второму ...)

 Смежные вопросы

  • Нет связанных вопросов^_^