10

我正在尝试使用 aspnet_compiler 将已经编译的项目从一个位置移动到另一个位置。我正在使用 Subversion 进行修订控制。

该过程基本上从 subversion 中获取所有代码,进行构建,然后调用 aspnet_compiler。

当我有一个排除的 ascx 文件时,我的问题就出现了。这个文件是最新代码的一部分,但是正常的编译编译器会忽略它,所以没有麻烦。然而,Aspnet_compiler 崩溃了,因为它找不到该特定控件的代码。

我不确定是否

  • 我做对了;
  • 有一种方法可以从 Subversion 获取正确的文件树
  • 有一种更简单的方法;或者
  • 这是意料之中的,我每次都需要删除排除的文件。

我会很感激任何帮助。

汤姆

4

4 回答 4

10

由于 .NET 4.5 或 4.5.1(我不确定是哪个),在 aspnet_compiler.exe 中添加了一个-x选项,它允许您从编译中排除目录。您可以通过命令“aspnet_compiler /?”找到该选项。

-x            The virtual path of a directory that should be excluded from precompilation.
This switch can be used multiple times.

例子:

我的网站中有一个名为“ToBeExcluded”的文件夹。我可以使用以下命令来预编译网站并排除该文件夹,

aspnet_compiler -v /foo -p "C:\MyWebsite" -x ToBeExcluded "c:\temp\web"
于 2015-11-02T18:14:11.693 回答
3

这是意料之中的:Aspnet_compiler.exe编译应用程序中的所有文件,而不查看项目文件。因此,它没有任何排除文件的概念。

Babak Naffas 的删除文件的建议可能是处理文件的最简单方法,而不是每次都手动删除它(或编写脚本删除)。

于 2011-03-17T06:42:03.250 回答
2

我为此苦苦挣扎了很久。但终于找到了解决方法

attrib +h folderToExclude & runAspComplierWithAllOptions & attrib -h folderToExclude

隐藏文件夹 -> 编译 -> 显示文件夹。

于 2017-04-04T10:32:18.847 回答
2

有一个非常简单的方法:将隐藏属性设置为要排除的文件夹,然后aspnet_compiler跳过它。

此错误的典型情况是node_modules创建的文件夹npm install

如果npm install从脚本运行,或者从命令行运行,则可以运行attrib命令,运行nmp install后隐藏文件夹:

attrib +H node_modules

如果npm installmsbuild项目运行,则可以添加exec任务,如下所示:

<PropertyGroup>
    <HideFolder>attrib +H "$(PackageJsonFolder)\node_modules"</HideFolder>
</PropertyGroup>
<!-- next line is for debugging, remove it when finished -->
<Warning Text="Hide node_modules command: '$(HideFolder)'"/>
<Exec Command="$(HideFolder)">

至少在我的测试中,命令的退出代码attrib始终为零,因此检查它以确定命令是否成功运行是没有意义的。

在前面的msbuild示例中,要隐藏的文件夹是"$(PackageJsonFolder)\node_modules"因为属性PackageJsonFolder是文件所在packages.json文件夹的名称,因此node_modules将在哪里创建。

对于其他情况,您始终可以指定相对于项目位置的文件夹,如下所示:

<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>

并使用前面示例中的相同石灰运行命令。

于 2018-04-09T14:56:13.433 回答