我正在尝试使用aspnet_compiler将已经从一个位置编译的项目移动到另一个位置。我正在使用Subversion进行版本控制。
该过程基本上将所有代码从subversion中获取,进行构建,然后调用aspnet_compiler。
当我有一个排除的ascx文件时,我的问题就出现了。这个文件是最新代码的一部分,但普通的构建编译器会忽略它,所以没问题。但是,Aspnet_compiler会爆炸,因为它找不到该特定控件的代码。
我不确定是否
我很感激任何帮助。
汤姆
答案 0 :(得分: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"
答案 1 :(得分:3)
这是预期的: Aspnet_compiler.exe 编译应用程序中的所有文件,但不查看项目文件。因此,它没有任何被排除文件的概念。
Babak Naffas建议删除该文件可能是处理该文件最简单的方法,而不是每次都手动删除它(或删除它的脚本)。
答案 2 :(得分:1)
我这么久都在苦苦挣扎。但终于找到了解决方法
attrib +h folderToExclude & runAspComplierWithAllOptions & attrib -h folderToExclude
隐藏文件夹 - >编译 - >显示文件夹。
答案 3 :(得分:1)
有一种非常简单的方法:将隐藏属性设置为要排除的文件夹,aspnet_compiler
将跳过它。
此错误的典型案例是node_modules
npm install
文件夹
如果从脚本或命令行运行npm install
,则可以在运行attrib
后运行nmp install
命令以隐藏文件夹:
attrib +H node_modules
如果您从npm install
项目运行msbuild
,则可以添加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
命令的exitcode总是为零,至少在我的测试中,所以检查它以确定命令是否成功运行是没有意义的。
在上一个msbuild
示例中,要隐藏的文件夹是"$(PackageJsonFolder)\node_modules"
,因为属性PackageJsonFolder
是packages.json
文件所在的文件夹的名称,因此node_modules
1}}将被创建。
对于其他情况,您始终可以指定相对于项目位置的文件夹,如下所示:
<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>
并使用前一个示例中的相同石灰运行命令。