gpt4 book ai didi

MSBuild 引用程序集未包含在构建中

转载 作者:行者123 更新时间:2023-12-02 08:51:48 24 4
gpt4 key购买 nike

我可以使用以下命令构建我的项目...

csc /reference:lib\Newtonsoft.Json.dll SomeSourceFile.cs

...但是当我使用这个命令时...

msbuild MyProject.csproj

...对于以下 .csproj 文件,不包括我的 .dll 引用。有什么想法吗?

<PropertyGroup>
<AssemblyName>MyAssemblyName</AssemblyName>
<OutputPath>bin\</OutputPath>
</PropertyGroup>

<ItemGroup>
<Compile Include="SomeSourceFile.cs" />
</ItemGroup>

<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>lib\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>

<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
</Target>

最佳答案

您没有将引用小组连接到 Csc 任务。此外,您指定的引用方式不能直接在任务中使用。 MSBuild 附带的任务包括 ResolveAssemblyReference,它能够将短程序集名称和搜索提示转换为文件路径。您可以在 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets 中看到它是如何使用的。

如果没有 ResolveAssemblyReference,您可以做的最简单的事情就是这样写:

<PropertyGroup> 
<AssemblyName>MyAssemblyName</AssemblyName>
<OutputPath>bin\</OutputPath>
</PropertyGroup>

<ItemGroup>
<Compile Include="SomeSourceFile.cs" />
</ItemGroup>

<ItemGroup>
<Reference Include="lib\Newtonsoft.Json.dll" />
</ItemGroup>

<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" References="@(Reference)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
</Target>

请注意,引用项指定引用程序集的直接路径。

关于MSBuild 引用程序集未包含在构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com