Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如果我只将visual studio解决方案文件复制并粘贴到另一个文件夹并从那里打开它,会发生什么情况?_Visual Studio - Fatal编程技术网

Visual studio 如果我只将visual studio解决方案文件复制并粘贴到另一个文件夹并从那里打开它,会发生什么情况?

Visual studio 如果我只将visual studio解决方案文件复制并粘贴到另一个文件夹并从那里打开它,会发生什么情况?,visual-studio,Visual Studio,它似乎可以工作并加载原始文件夹中的所有项目文件。这怎么可能呢?这将非常有效,因为您的所有解决方案数据都存储在文件夹中的解决方案文件中 唯一的其他问题可能是: 如果您使用的是git,那么会有一个隐藏的文件夹存储git回购信息 如果您的解决方案、代码、构建脚本等具有硬编码路径,则需要更正它们。(项目文件夹和解决方案文件夹中的路径是相对的。) 查看.sln和.*proj文件将很有启发性。以下是我的一个.sln文件的开头: Microsoft Visual Studio Solution File,

它似乎可以工作并加载原始文件夹中的所有项目文件。这怎么可能呢?

这将非常有效,因为您的所有解决方案数据都存储在文件夹中的解决方案文件中

唯一的其他问题可能是:

  • 如果您使用的是git,那么会有一个隐藏的文件夹存储git回购信息
  • 如果您的解决方案、代码、构建脚本等具有硬编码路径,则需要更正它们。(项目文件夹和解决方案文件夹中的路径是相对的。)

查看.sln和.*proj文件将很有启发性。以下是我的一个.sln文件的开头:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.4
Project("{12B76EC0-1D7B-4FA7-A7D0-C524288B48A1}") = "Mnemosyne", "Mnemosyne\Mnemosyne.ilproj", "{D80B3419-AE6B-44BB-8494-276E8513DAA2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{0AFEC763-B9EC-44CB-8BFC-7F358B59F9BF}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
这里的位
Mnemosyne\Mnemosyne.ilproj
Tests\Tests.csproj
是相对路径。在这些文件中,还有一个来自Mnemosyne.ilproj的片段:

    <OutputPath>bin\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <ConsolePause>false</ConsolePause>
    <Optimize>True</Optimize>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="Constructor.il" />
    <Compile Include="Copy.il" />
    <Compile Include="Overloads.il">
      <DependentUpon>Overloads.tt</DependentUpon>
      <AutoGen>True</AutoGen>
    </Compile>
    <Compile Include="Properties\AssemblyInfo.il" />
此处
。\packages\NUnit.2.6.3\lib\NUnit.framework.dll
UnitTests.gen.cs
UnitTests.tt
是路径

所有这些路径都是相对的,并且指向文件夹中的文件或文件夹,因此可以按照您描述的方式复制此项目,并且仍然有效

如果你指向你的文件夹之外,或者你有一个完整的路径,那么你可能会破坏东西

您还需要确保配置文件,运行应用程序时使用的web和应用程序配置文件,以及nuget使用的package.config文件。它们还具有必须是相对的路径


一般来说,您应该确保您的路径是相对的,并且针对.NET的各种IDE(VisualStudio、SharpDevelop、MonoDevelop、Xamarin Studio)都会出于这个原因支持相对路径。能够像这样复制和移动总是很有用的,如果没有它,您将无法轻松使用源代码管理,因为每次克隆存储库时,您都必须更改路径。

为什么不试试看,而不是问这样一个简单的问题呢?这种类型的问题在这里也是离题的。@deathismyfriend这种类型的问题属于主题问题,因为它属于程序员使用的工具。如果没有更多的细节,是的,这是可以关闭的,因为它并没有真正提出问题。是的,我应该指定它,因为它目前是离题的。我不认为有任何理由它会工作。。。sln文件具有指向所有项目的相对路径,因此在几乎所有情况下,仅将sln移动到任意位置都会导致所有链接断开。如果您的解决方案具有任何相对项目路径,这也可能是一个问题。@BradleyDotNET我刚刚添加了:)如果您的解决方案包含绝对路径,请编辑.csproj(XML格式)使用文本编辑器并更新绝对路径。
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="nunit.framework">
      <HintPath>..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="UnitTests.gen.cs">
      <DependentUpon>UnitTests.tt</DependentUpon>
      <AutoGen>True</AutoGen>
    </Compile>