假设有一个解决方案,引用了本地电脑的其它的项目(不在这个方案目录下)。现在,你把这个解决方案复制了一份,再用VS打开,会发现包含的方案加载不了,而且引用中这个Dll也显示黄色叹号?这个时候有两种方法解决问题。
在“解决方案资源管理器”中,卸载掉对应的项目,和对应的Dll,重新加载项目并且重新引用。
打开解决方案文件夹,右键用编辑器打开".sln"解决方案文件,大概是这个样子:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32510.428
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Motion", "Motion\Motion.csproj", "{020616CF-A0F1-4531-B9B3-F88FECB41086}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MotionCard", "..\Device\MotionCard\MotionCard\MotionCard.csproj", "{1F786901-D625-4163-AC7C-2F2E5EFF44D7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utility.Common", "..\Utility\Utility.Common\Utility.Common\Utility.Common.csproj", "{7DE06D1C-38B2-4343-8330-BBDC44D591DD}"
EndProject
Global
……
……
EndGlobal
注意红字部分,这里就是我们的解决方案中包含的项目文件,使用的是相对路径,修改为新的相对路径就好。
上面解决了解决方案中包含的项目加载问题,引用Dll的问题可以进入项目文件夹,右键用编辑器打开“.csproj”文件,这个是我们这个项目的项目文件。内如如下:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="" target="_blank">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>{020616CF-A0F1-4531-B9B3-F88FECB41086}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Motion</RootNamespace>
<AssemblyName>Motion</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
……
……
<ItemGroup>
<ProjectReference Include="..\Device\MotionCard\MotionCard\MotionCard.csproj">
<Project>{1f786901-d625-4163-ac7c-2f2e5eff44d7}</Project>
<Name>MotionCard</Name>
</ProjectReference>
<ProjectReference Include="..\Utility\Utility.Common\Utility.Common\Utility.Common.csproj">
<Project>{7de06d1c-38b2-4343-8330-bbdc44d591dd}</Project>
<Name>Tatfook.Utility.Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
同样,红字部分就是我们的解决方案中应用的项目文件,使用的是相对路径,修改为新的相对路径就好。