1

我正在使用 VS 2010 Web 应用程序项目。我想将 web 应用程序的默认 OutputPath 属性更改为其他地方的目录。当我在解决方案中有另一个项目时,这似乎并不完全有效:

第一的:

  • 创建一个空白的 Web 应用程序项目,WebApplication1
  • 将项目属性中的 OutputPath 从更改binc:\binaries
  • 右键单击解决方案资源管理器中的项目,然后构建。

一切都按预期工作,并被WebApplication1.dll复制到c:\binaries.

然后:

  • 将类库添加到同一个解决方案 ClassLibrary1
  • 将类库作为项目引用添加到 Web 应用程序。
  • 右键单击解决方案资源管理器中的 Web 应用程序项目,然后构建。

ClassLibrary1.dll和都WebApplication1.dll复制到c:\binaries现在WebApplication1\Bin创建了一个目录,其中仅包含ClassLibarary1.dll

问题:

有没有人遇到过这个?我在网上找到的唯一参考是this,没有答案。欣赏任何禁用Bin文件夹创建的方法。

更多信息

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

  • 我翻阅了 msbuild 日志,但无济于事。我找不到与该路径有关的任何属性。大写B的 forBin也很奇怪,在 msbuild 中使用的所有路径通常都是bin.

  • 最后,我WebApplication.targets从 web 应用程序的 proj 文件中删除了文件 Import,但它没有任何区别。事实上,查看 msbuild 日志,似乎没有任何来自 WebApplication.targets 的目标被执行。

4

1 回答 1

1

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

完整的 Web 应用程序输出是带有 *.aspx、.js、web.config、bin\ .dll 文件等的站点。要将其复制到您的c:\binaries目录,请指定OutDir。但因此,您将在路径c:\binaries\_PublishedWebsites\WebApplication1下获得完整站点。_PublishedWebsites子文件夹无法重命名。

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

编辑:如果你真的不想看到 bin 目录,只需在 svn/git/... 中忽略它。

于 2011-02-21T11:14:39.043 回答