Visual studio 排除“.js”文件,但不排除';。min.js';MSBuild发布中的文件
使用Visual Studio和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
.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) -> Minified: @(JS)" Importance="high" />
<Message Text="[pcv] $(MSBuildProjectName) -> Minified: @(CSS)" Importance="high" />