Visual studio 2010 VisualStudio&;MSBuild处理Web应用程序项目的OutputPath

Visual studio 2010 VisualStudio&;MSBuild处理Web应用程序项目的OutputPath,visual-studio-2010,msbuild,web-application-project,Visual Studio 2010,Msbuild,Web Application Project,我正在使用VS2010 web应用程序项目。我想将web应用程序的默认OutputPath属性更改为其他目录。当我在解决方案中有其他项目时,这似乎不完全起作用: 第一名: 创建一个空白的web应用程序项目WebApplication1 将项目属性中的输出路径从bin更改为c:\binaries 右键单击解决方案资源管理器中的项目,然后构建 一切正常,并且WebApplication1.dll被复制到c:\binaries 然后: 将类库添加到同一解决方案ClassLibrary1 将类库作

我正在使用VS2010 web应用程序项目。我想将web应用程序的默认OutputPath属性更改为其他目录。当我在解决方案中有其他项目时,这似乎不完全起作用:

第一名:

  • 创建一个空白的web应用程序项目WebApplication1
  • 将项目属性中的输出路径从
    bin
    更改为
    c:\binaries
  • 右键单击解决方案资源管理器中的项目,然后构建
一切正常,并且
WebApplication1.dll
被复制到
c:\binaries

然后:

  • 将类库添加到同一解决方案ClassLibrary1
  • 将类库作为项目引用添加到web应用程序
  • 在解决方案资源管理器中右键单击web应用程序项目,然后构建
ClassLibrary1.dll
WebApplication1.dll
都被复制到
c:\binaries
但是现在创建了一个
WebApplication1\Bin
目录,其中只包含
ClassLibarary1.dll

问题:

以前有人遇到过这种情况吗?我在网上找到的唯一参考资料是,没有答案。感谢您以任何方式禁用创建
Bin
文件夹

更多信息

  • 这仅在从VisualStudio内部构建时发生。如果我使用
    msbuild WebApplication1.csproj
    ,则不会创建这个神秘的
    Bin
    目录

  • 我翻遍了msbuild日志,但没有结果。我找不到与该路径相关的任何属性。
    Bin
    的大写字母
    B
    也很奇怪,在msbuild中使用的所有路径通常都是
    Bin

  • 上一次,我从web应用程序的proj文件中删除了
    WebApplication.targets
    文件导入,但这并没有什么不同。事实上,查看msbuild日志,似乎没有执行WebApplication.targets中的任何目标


您的web应用程序具有与webapplication1项目目录相同的默认输出路径Bin目录由站点内部使用,以查找相关程序集的位置(请参阅)。默认情况下,Microsoft.Web.Publishing.targets使用它在本地复制所有依赖的资产

完整的web应用程序输出是一个包含*.aspx、.js、web.config、bin\.dll文件等的站点。要将其复制到c:\binaries目录,请指定OutDir。但结果是,您将在路径c:\binaries\\u PublishedWebsites\WebApplication1下获得完整的站点。和\u PublishedWebsites子文件夹无法重命名

这种默认行为似乎非常严格。您可以在C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets中看到构建目标的内部结构


编辑:如果您真的不想看到bin目录,请在svn/git/中忽略它

您的web应用具有与webapplication1项目目录相同的默认输出路径Bin目录由站点内部使用,以查找相关程序集的位置(请参阅)。默认情况下,Microsoft.Web.Publishing.targets使用它在本地复制所有依赖的资产

完整的web应用程序输出是一个包含*.aspx、.js、web.config、bin\.dll文件等的站点。要将其复制到c:\binaries目录,请指定OutDir。但结果是,您将在路径c:\binaries\\u PublishedWebsites\WebApplication1下获得完整的站点。和\u PublishedWebsites子文件夹无法重命名

这种默认行为似乎非常严格。您可以在C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets中看到构建目标的内部结构


编辑:如果您真的不想看到bin目录,请在svn/git/中忽略它

我不想将整个web应用程序复制到'c:\binaries'中更正最后一条评论:我不想将整个web应用程序复制到c:\binaries中,只复制DLL。正如我所说,我注释掉了从webapplication1.csproj导入的Microsoft.WebApplication.targets文件(该文件反过来导入publishing.targets)。这没有什么区别——这意味着问题不在于您提到的两个目标文件。此外,它仅在使用ms build时在visual studio中生成而不是从命令行生成时发生。在VS中使用ms build的行为有时非常奇怪。VS在启动时将所有注册的目标文件加载到内存中。如果删除Microsoft.WebApplication.targets的导入,则甚至无法在MSBuild中编译项目。所以您使用的是.targets文件。将始终创建WebAplication1\bin目录。我不想将整个web应用复制到'c:\binaries'中更正最后一条评论:我不想将整个web应用复制到c:\binaries中,只复制DLL。正如我所说,我注释掉了从webapplication1.csproj导入的Microsoft.WebApplication.targets文件(该文件反过来导入publishing.targets)。这没有什么区别——这意味着问题不在于您提到的两个目标文件。此外,它仅在使用ms build时在visual studio中生成而不是从命令行生成时发生。在VS中使用ms build的行为有时非常奇怪。VS在启动时将所有注册的目标文件加载到内存中。如果删除Microsoft.WebApplication.targets的导入,则甚至无法在MSBuild中编译项目。所以您使用的是.targets文件。将始终创建WebAplication1\bin目录。