云服务项目(ccproj)不会使用不安全的代码编译 - VSTS

时间:2018-03-16 13:40:33

标签: c# azure azure-devops

我有一个Cloud Service项目,用于通过VSTS在托管代理上部署我的WebRole。

使用Azure云服务模板创建构建定义,其中包括以下步骤:

  • 构建解决方案** \ * .sln(步骤#1)
  • 构建解决方案** \ * .ccproj(步骤#2)

我添加了

<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

使用不安全代码的类库的.csproj文件(用于发布和调试配置)。我在部署时使用了发布配置。

构建解决方案** \ *。sln 步骤通过,但构建解决方案** \ * .ccproj 步骤失败。

通过检查日志,我可以看到构建解决方案** \ *。sln 步骤是使用/ unsafe +参数启动的,但第二个构建步骤不是。

此外,步骤#1的MSBuild参数为空,但对于步骤#2,它们是:

  

/ t:Publish / p:TargetProfile = $(targetProfile)/ p:DebugType = None   / p:SkipInvalidConfigurations = true / p:OutputPath = bin \   / P:PublishDir = “$(build.artifactstagingdirectory)\”

如何将此参数添加到ccproj构建?

2 个答案:

答案 0 :(得分:1)

<AllowUnsafeBlocks>true</AllowUnsafeBlocks>已添加到Release | AnyCPU条件:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>

但是,使用&#34;任何cpu&#34;来构建项目时平台(默认情况下,在任何&#39; cpu&#39;之间有空格)条件不会受到影响,这与构建.sln项目时相反。我必须明确地将平台设置为&#34; anycpu&#34;没有空间,一切正常。由于这个原因,它也没有选择代码。

enter image description here

答案 1 :(得分:0)

它使用项目的默认平台(通过NotePad打开项目文件,并检查它)是否在VS构建任务中删除了Platform参数,因此您可以在构建定义中检查BuildPlatform构建变量(变量选项卡)的值。 p>