使用MSBuild从网站生成中排除文件夹

使用MSBuild从网站生成中排除文件夹,msbuild,Msbuild,我们使用MSBuild通过CruiseControl构建解决方案。作为解决方案的一部分,我们有几个程序集和一个网站。通过VS2008构建成功。然而,在构建框中,我们得到了以下错误 ASPNETCOMPILER (,): errorASPCONFIG: The CodeDom provider type "Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=2.0.0.0, Culture=neu

我们使用MSBuild通过CruiseControl构建解决方案。作为解决方案的一部分,我们有几个程序集和一个网站。通过VS2008构建成功。然而,在构建框中,我们得到了以下错误

ASPNETCOMPILER (,):

        errorASPCONFIG: The CodeDom provider type "Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" could not be located.
这是因为在网站的scripts文件夹中有几个扩展名为.java的文件。我们不希望生成这些文件。实际上,我们不需要脚本文件夹中的任何内容


有没有办法排除在网站项目中生成的文件夹或扩展?或者告诉MSBuild遵循VS2008用于决定编译内容的相同规则?

生成文件中将包含相关项的项组。只需编辑文件即可排除该项

用于:


fr
fr
...
编辑:回答评论的更正


如果您只有一个sln文件,是否可以创建元msbuild脚本,将文件移到一边,调用任务以生成解决方案,然后将其放回原位?

您可以使用此脚本。在WDP中,可以使用ExcludeFromBuild项排除这些文件。有关详细信息,请参阅。

您可以使用元素()的删除属性删除整个文件夹。 例如,如果您有如下定义的项:

<ItemGroup>
    ...
    <Compile Include="Tests\Test1.cs" />
    <Compile Include="Tests\SubTests\SubTest1.cs" />
    ...
</ItemGroup>

...
...
如果要从“测试”文件夹中排除所有类,可以在项目结束时定义任务:

    ...
    <PropertyGroup>
        <CoreCompileDependsOn>$(CoreCompileDependsOn);ExcludeTestsFolder</CoreCompileDependsOn>
    </PropertyGroup>
    <Target Name="ExcludeTestsFolder">
        <ItemGroup>
            <Compile Remove="Tests\**\*.cs" />
        </ItemGroup>
    </Target>
</Project>
。。。
美元(CoreCompiledPendson);排除测试文件夹

在外部文件中定义这样的任务并使用element()导入也是一个好主意。

我认为这不适用于网站项目,因为没有项目文件。我在sln文件中查找了一些方法,但没有找到。正因为如此,我不喜欢网站项目,更喜欢web应用程序。但是,您可以仅为CI生成创建msbuild文件吗?
    ...
    <PropertyGroup>
        <CoreCompileDependsOn>$(CoreCompileDependsOn);ExcludeTestsFolder</CoreCompileDependsOn>
    </PropertyGroup>
    <Target Name="ExcludeTestsFolder">
        <ItemGroup>
            <Compile Remove="Tests\**\*.cs" />
        </ItemGroup>
    </Target>
</Project>