我想在我的MSBuild文件中声明三个属性,并用另一个属性覆盖一个属性(取决于被调用的目标),但是无法弄清楚如何执行此操作.我的构建文件看起来像这样:
<PropertyGroup>
<DeployPath_TEST>\\test-server-path\websites\mysite</DeployPath_TEST>
<DeployPath_LIVE>\\live-server-path\websites\mysite</DeployPath_LIVE>
<DeployPath></DeployPath>
</PropertyGroup>
<Target Name="Deploy-TEST">
<PropertyGroup>
<DeployPath>$(DeployPath_TEST)</DeployPath>
</PropertyGroup>
<CallTarget Targets="Deploy-Sub"/>
</Target>
<Target Name="Deploy-LIVE">
<PropertyGroup>
<DeployPath>$(DeployPath_TEST)</DeployPath>
</PropertyGroup>
<CallTarget Targets="Deploy-Sub"/>
</Target>
<Target Name="Deploy-Sub">
<Message Text="Deploying to $(DeployPath)"/>
<MSBuild Projects="MySolution.csproj" Targets="Rebuild" />
<ItemGroup>
<MyFiles Include="**\*"/>
</ItemGroup>
<Copy SourceFiles="@(MyFiles)"
DestinationFiles="@(MyFiles->'$(DeploymentPath)\%(RecursiveDir)%(FileName)%(Extension)')"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试重新声明属性设置它的值,但这不起作用.
我正在使用 VS2019 和 .NET CORE 2.2 我收到警告 AL1073
ALINK 警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
我知道这与问题很接近:ALINK:警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
但:
我在 .NET CORE 2.2 而不是 4.x
那里提出的解决方案不适用于 .NET 核心
特别是,试图添加:
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory Condition=" '$(PlatformTarget)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)\$(PlatformTarget)\
</TargetFrameworkSDKToolsDirectory>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
发出另一个警告
警告 MSB3084 任务试图在两个位置找到“al.exe”。1) 在基于 SdkToolsPath 生成的 "\x64\" 处理器特定目录下 2) 在 SDKToolsPath 属性指定的 "\x64\" 下 x86 特定目录。您可以通过执行以下操作之一来解决该问题:1) 将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置。C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
真的很奇怪,因为根据警告,位置是一样的!
另外:我很乐意在构建设置中取消警告,因为我所有的单元测试都通过了,但是将 1073 添加到列表中对仍然出现的 AL1073 警告没有影响。
或者,警告提示:将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置,我该怎么做?
更新回答评论:这很难在简单的设置中重现。该项目特别引用了几个 Github 项目(fo-dicom)。fo-dicom 库使用为 32 和 64 平台构建的图像库。我确实尝试设置为 64 …