代码之家  ›  专栏  ›  技术社区  ›  Mike Schall

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

  •  2
  • Mike Schall  · 技术社区  · 15 年前

    我们使用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用来决定编译什么的规则?

    3 回复  |  直到 12 年前
        1
  •  1
  •   Sayed Ibrahim Hashimi    15 年前

    你可以使用 Web Deployment Projects 为此。在WDP中,可以使用Tube Debug构建项来排除这些文件。有关详细信息,请参见 http://msdn.microsoft.com/en-us/library/aa479568.aspx .

        2
  •  1
  •   Community CDub    8 年前

    您可以用删除属性删除整个文件夹。 Item 元素( brief introduction on MSDN )

    例如,如果定义了如下项:

    <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>
    

    在外部文件中定义这样的任务并将其导入 Import 元素( thorough explanation in another thread )

        3
  •  0
  •   Preet Sangha    15 年前

    在生成文件中,将有一个具有相关项的项组。只需编辑文件以排除该项。

    为了 example :

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <ItemGroup>
            <Res Include = "Strings.fr.resources" >
                <Culture>fr</Culture>
            </Res>
            <Res Include = "Dialogs.fr.resources" >
                <Culture>fr</Culture>
            </Res>
    
            <CodeFiles Include="**\*.cs" Exclude="**\generated\*.cs" />
            <CodeFiles Include="..\..\Resources\Constants.cs" />
        </ItemGroup>
    ...
    </Project>
    

    编辑:更正回答评论。

    如果只有sln文件,是否可以创建meta-msbuild脚本,将文件移到一边,调用任务来构建解决方案,然后将它们放回去?