Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 排除“.js”文件,但不排除';。min.js';MSBuild发布中的文件_Visual Studio_Deployment_Build_Msbuild_Msdeploy - Fatal编程技术网

Visual studio 排除“.js”文件,但不排除';。min.js';MSBuild发布中的文件

Visual studio 排除“.js”文件,但不排除';。min.js';MSBuild发布中的文件,visual-studio,deployment,build,msbuild,msdeploy,Visual Studio,Deployment,Build,Msbuild,Msdeploy,使用Visual Studio和MSBuild,我希望能够排除所有.js文件,并在部署中包括所有.min.js文件 我知道这可以通过使用VisualStudio中的文件属性来实现,但这不是一个选项,因为文件太多了 在我的Visual Studio项目中,我有以下PublishProfile。除了 文件系统 德尔波伊静电 任何CPU 真的 真的 \\***\wwwroot\***.com\static 假的 这可以通过使用PublishProfile实现吗?如果是,怎么做 <Proj

使用Visual Studio和MSBuild,我希望能够排除所有
.js
文件,并在部署中包括所有
.min.js
文件

我知道这可以通过使用VisualStudio中的文件属性来实现,但这不是一个选项,因为文件太多了


在我的Visual Studio项目中,我有以下
PublishProfile
。除了


文件系统
德尔波伊静电
任何CPU
真的
真的
\\***\wwwroot\***.com\static
假的
这可以通过使用
PublishProfile
实现吗?如果是,怎么做


<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <!-- ... -->
  </PropertyGroup>

  <Target Name="BeforeBuild">
    <ItemGroup>
      <Minified Include="**\*.min.js" />
      <Maxified Include="**\*.js" Exclude="@(Minified)" />
      <Content Remove="@(Maxified)" />
    </ItemGroup>
  </Target>
</Project>
文件系统
编辑:


文件系统
箱子
@(最大化);Web.config

如果要排除文件,可以将要排除的文件放在ExcludeFromPackageFiles项目组中。在您的情况下,您希望获取所有.js文件,并排除除
*.min.js
以外的所有文件。要在.pubxml文件中执行此操作,请在.pubxml文件中添加以下内容

  <ItemGroup>
    <ExcludeFromPackageFiles Include="js\**\*.js" Exclude="js\**\*min*.js">
      <FromTarget>Project</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>

项目
注意:此代码段假定您的.js文件位于名为
js

对我工作的文件夹中:

  • 编辑
    .csproj
    文件
  • 查找章节
    MinifyJavaScriptAndCSS
  • JS
    标记中编辑属性
    Exclude
  • 添加在发布期间要忽略的目录或文件
  • 
    
    如果您愿意,我可以帮助您处理MSBuild,但我建议您忽略发布。如果您仍然需要MSBuild publish profile解决方案,请看一看并告诉我您是否还需要该解决方案?谢谢,这看起来很棒,我只需要找出如何使用可用语法忽略
    .js
    文件而不是
    .min.js
    文件。publish ignore是否严格遵循gitignore语法?似乎没有
    错误MSB4018:“ReadPublishIgnoreFile”任务意外失败。System.NotSupportedException:异常!c:\Users\sblowes\AppData\Local\Temp\bzp34wjd.0.cs:Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()中的c:\Users\sblowes\AppData\Local\Temp\bzp34wjd.0.cs:Microsoft.Build.BackEnd.ITaskExecutionHost()的第89行中当前不支持运算符
    很抱歉,我忘了我从未实现对的支持!。我打开了一个问题来跟踪它。我也回答了下面的问题。对不起,在赏金用完之前我没有时间测试。我已加倍赏金,并将在24小时内奖励,这与此行
    bin冲突。使用代码时,bin文件夹仍处于部署状态。@Blowsie,在空的web应用程序项目中工作正常,没有
    bin
    部署,只有
    .min.js
    。您是否设置了删除现有文件的
    Exclude*FromDeployment
    甚至更好,不需要处理事件,请参见编辑。更新的示例抛出一个错误
    元素中的属性“Remove”无法识别
    @Blowsie第二个非基于事件的属性中没有
    Remove
    属性。谢谢,另一个快速问题。文件系统web发布完成时是否有目标?发布到Azure时,这是否仍然适用于VS 2015?我发现未缩小的js文件位于推送到Azure之前创建的临时文件夹中,然后也被推送到Azure。我的项目的Js文件位于[解决方案文件夹][项目文件夹]\wwwroot\Js中。我尝试过“wwwroot\js\”和“js\”之类的路径
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <!-- ... -->
      </PropertyGroup>
    
      <ItemGroup>
        <Minified Include="**\*.min.js" />
        <Maxified Include="**\*.js" Exclude="@(Minified)" />
      </ItemGroup>
      <PropertyGroup>
        <ExcludeFoldersFromDeployment>bin</ExcludeFoldersFromDeployment>
        <ExcludeFilesFromDeployment>@(Maxified);Web.config</ExcludeFilesFromDeployment>
      </PropertyGroup>
    </Project>
    
      <ItemGroup>
        <ExcludeFromPackageFiles Include="js\**\*.js" Exclude="js\**\*min*.js">
          <FromTarget>Project</FromTarget>
        </ExcludeFromPackageFiles>
      </ItemGroup>
    
    <Target Name="MinifyJavaScriptAndCSS" AfterTargets="CopyAllFilesToSingleFolderForPackage" Condition="'$(Configuration)'=='Release'">
        <ItemGroup>
    
          <!-- Every .js file (exclude *.min.js and *.vsdoc.js files) -->
          <JS Include="$(_PackageTempDir)\**\*.js" Exclude="$(_PackageTempDir)\**\*.min.js;$(_PackageTempDir)\**\*vsdoc.js;" />
    
          <CSS Include="$(_PackageTempDir)\**\*.css" Exclude="$(_PackageTempDir)\**\*.min.css" />
        </ItemGroup>
        <AjaxMin JsKnownGlobalNames="jQuery,$" JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css" />
        <Message Text="[pcv] $(MSBuildProjectName) -&gt; Minified: @(JS)" Importance="high" />
        <Message Text="[pcv] $(MSBuildProjectName) -&gt; Minified: @(CSS)" Importance="high" />