我已經設置了一個Web應用程序項目,並具有額外的構建後步驟以壓縮一些生成的文件以進行發佈構建。爲此,我添加了MSBuild社區任務 NuGet包。當我在Visual Studio中構建時,此工作正常,並且我確認已創建zip文件。在的csproj文件的相關部分是:由於第三方構建任務,編程項目構建失敗
<PropertyGroup>
<MSBuildCommunityTasksPath>$(SolutionDir)\.build</MSBuildCommunityTasksPath>
<ZipFile>$(SolutionName).zip</ZipFile>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.targets" />
<Target Name="Zip" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<ItemGroup>
<ZipFiles Include="$(ProjectDir)\*.js; $(ProjectDir)\manifest.json" Exclude="$(ProjectDir)\*.map.js" />
</ItemGroup>
<Delete Files="$(ZipFile)" />
<Zip Files="@(ZipFiles)" WorkingDirectory="$(ProjectDir)" ZipFileName="$(ZipFile)" ZipLevel="9" />
</Target>
我在試圖自動建立上述項目的另一個項目的一些代碼。下面是代碼:
var projectInstance = new ProjectInstance(project.File.AbsolutePath);
projectInstance.SetProperty("Configuration", "Release");
projectInstance.SetProperty("SolutionDir", project.Solution.Directory.AbsolutePath);
projectInstance.Build("Build", Enumerable.Empty<ILogger>());
上面的代碼失敗,出現以下錯誤信息:
的「壓縮」任務沒有被發現。檢查以下內容:1.)項目文件中任務的名稱與任務類的名稱相同。 2.)任務類是「public」並實現Microsoft.Build.Framework.ITask接口。 3.)任務在項目文件或「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319」目錄中的* .tasks文件中正確聲明。
如果我刪除Zip
任務,它的工作完美無瑕。爲什麼當我以編程方式構建時失敗,而不是在VS中構建時失敗?我該如何解決它?如果你給的軟件包的選項從Visual Studio的工具菜單中恢復>>選項>>軟件包管理器>>通用
您是否使用'msbuild'命令從Visual Studio命令提示符嘗試過相同的命令。如果沒有,你可以嘗試一次併發布結果嗎? – RinoTom
@RinoTom,我剛剛嘗試過,並且產生了相同的結果。它還包含錯誤編號:*錯誤MSB4036 *。 – Sam