第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何正確打包生成源代碼的 Nuget 分布式自定義工具作為構(gòu)建的一部分

如何正確打包生成源代碼的 Nuget 分布式自定義工具作為構(gòu)建的一部分

C#
慕婉清6462132 2022-12-31 13:15:22
多虧了 Nate McMaster 的這篇精彩文章,我知道了如何將 .NET Core 控制臺(tái)應(yīng)用程序打包為 Nuget 包,自動(dòng)將自身安裝為(在本例中為預(yù)編譯任務(wù))構(gòu)建任務(wù)。為了測(cè)試是否一切正常,我只是讓我的自定義工具寫(xiě)出一個(gè)公共 C# 類(lèi)。這是 Github 上完整且可運(yùn)行的示例。但是,我的自定義工具添加的文件實(shí)際上并不是構(gòu)建的一部分(第一個(gè)實(shí)際生成文件的文件),因此引入的類(lèi)在第一次構(gòu)建后不在程序集中(請(qǐng)參見(jiàn) 此處的第 38 行)。但是,由于 .NET Core 項(xiàng)目現(xiàn)在自動(dòng)將所有 .cs 文件包含在項(xiàng)目旁邊,因此它將新類(lèi)構(gòu)建到后續(xù)構(gòu)建的輸出中(參見(jiàn)此處的第 57 行)。生成的文件不會(huì)完全消失,但通常不會(huì)像 MSBuild 任務(wù)輸出的那樣。但是,因?yàn)?exec 發(fā)生在目標(biāo)文件中,所以我們應(yīng)該可以訪問(wèn)所有機(jī)制來(lái)實(shí)現(xiàn)這一點(diǎn)。所以我的問(wèn)題是:我如何正確執(zhí)行自定義構(gòu)建工具(控制臺(tái)應(yīng)用程序),該工具需要檢查項(xiàng)目及其文件并生成源代碼(最好在 obj/ 中作為<foo>.g.cs單個(gè)構(gòu)建的一部分編譯到生成的程序集中?理想情況下,這生成的文件也不應(yīng)出現(xiàn)在解決方案資源管理器中。幫助!
查看完整描述

1 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

在中間文件夾中生成中間文件(CustomTool.g.cs)時(shí)(您需要對(duì)其進(jìn)行解析,請(qǐng)參閱 Refit 庫(kù)中的示例:https ://github.com/reactiveui/refit/blob/5b4e14aaf8a1fcc27396b7c08171d100aba1b97d/Refit/targets /refit.targets#L11 ); 您需要將其顯式添加為編譯項(xiàng)。

以您的示例目標(biāo)文件(https://github.com/aniongithub/CustomTool/blob/master/CustomTool/RunCustomTool.targets#L13)為例:

<Project>

  <PropertyGroup>

    <IntermediateOutputPath Condition="$(IntermediateOutputPath) == '' Or $(IntermediateOutputPath) == '*Undefined*'">$(MSBuildProjectDirectory)obj\$(Configuration)\</IntermediateOutputPath>


    <!-- Command to invoke CustomTool -->

    <CustomTool>dotnet "$(MSBuildThisFileDirectory)/netcoreapp2.2/CustomTool.dll"</CustomTool>


    <!-- Other variables  -->

    <CustomVariable>"$(MSBuildProjectDir)"</CustomVariable>

  </PropertyGroup>


  <Target Name="CustomTool" BeforeTargets="CoreCompile" DependsOnTargets="PrepareForBuild">

    <Exec Command="$(CustomTool) $(ProjectPath) $(IntermediateOutputPath)CustomTool.g.cs" />


    <!-- add generated file as a compile item, otherwise it won't get picked up -->

    <ItemGroup Condition="Exists('$(IntermediateOutputPath)\CustomTool.g.cs')">

      <Compile Include="$(IntermediateOutputPath)\CustomTool.g.cs" />

    </ItemGroup>

  </Target>

</Project>


查看完整回答
反對(duì) 回復(fù) 2022-12-31
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)