Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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正在创建/修改的.csproj.user?_Visual Studio_Visual Studio 2012 - Fatal编程技术网

Visual studio 如何在项目运行之前处理Visual Studio正在创建/修改的.csproj.user?

Visual studio 如何在项目运行之前处理Visual Studio正在创建/修改的.csproj.user?,visual-studio,visual-studio-2012,Visual Studio,Visual Studio 2012,那么,问题是什么 问题在于Visual Studio将.csproj.user视为正在运行的项目的依赖项 让我们假设如下: 我们有一个新构建的解决方案,其中包含一个web应用程序项目X,作为启动项目 X web应用程序提供了Silverlight应用程序 最初没有X.csproj.user文件 现在考虑以下事件: 在VisualStudio中打开解决方案 建造 跑 将打开一个对话框,询问是否要启用Silverlight调试。启用它 停止调试会话 再跑一次 停止调试会话 再跑一次 假设在第2步

那么,问题是什么

问题在于Visual Studio将.csproj.user视为正在运行的项目的依赖项

让我们假设如下:

  • 我们有一个新构建的解决方案,其中包含一个web应用程序项目
    X
    ,作为启动项目
  • X web应用程序提供了Silverlight应用程序
  • 最初没有
    X.csproj.user
    文件

现在考虑以下事件:

  • 在VisualStudio中打开解决方案
  • 建造
  • 将打开一个对话框,询问是否要启用Silverlight调试。启用它
  • 停止调试会话
  • 再跑一次
  • 停止调试会话
  • 再跑一次
  • 假设在第2步没有构建任何内容(因为解决方案完全是最新的),那么在第3步和第6步会构建任何内容吗

    答案是肯定的,原因如下:

    • 当项目被请求运行时,
      X.csproj.user
      文件实际上是由Visual Studio创建的。接下来发生的事情是,Visual Studio将
      X.csproj.user
      文件视为项目
      X
      的依赖项。刚刚创建的文件比项目二进制文件更新,因此VisualStudio构建项目
      X
      。这解释了为什么在步骤3中构建项目
    • 当我们同意启用Silverlight调试时,Visual Studio会在
      X.csproj.user
      文件中记录此协议。因此,在项目开始运行后,将再次修改该文件。重新启动调试会话将再次生成项目
      X
      ,毕竟
      X.csproj.user
      比一秒钟前生成的二进制文件更新。这解释了为什么在步骤6中构建项目
    幸运的是,在步骤8中没有构建任何内容

    叫我佩蒂,但我想避免步骤3和6中的构建。问题是,我不允许签入X.csproj.user文件,因为这可能会导致人们意外地签入他们的私人更改,从而造成混乱

    另一方面,我无法将其默认内容(以及启用Silverlight调试的协议)移动到
    X.csproj
    中。嗯,我可以,但这只是被忽视了

    因此,我的问题是-是否可以将
    .csproj.user
    中存储的内容分为两组:

    • 永久的。这些是我希望在
      .csproj
      文件中包含的内容。它将被登记
    • 临时/私人。这些都是个人开发者私有的东西。从未登记过
    Visual Studio已经允许对某些属性进行此分离-请参见Web应用程序项目的Web属性选项卡中的将服务器设置应用于所有用户(存储在项目文件中)复选框。然而,这是不够的


    关于如何防止上述冗余构建的任何其他想法也都是受欢迎的。

    只是想澄清一下:您所说的是少量、有限数量的额外构建,对吗?选择Silverlight调试后,文件不会再次更改,对吗?对。我在帖子中提到了这一点——幸运的是,在第8步没有构建任何东西。我知道我很小气…谢谢。只是确定问题的范围。