如何将python项目附加到.net核心应用程序

2024-04-19 21:53:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个visualstudio2019,我有一个解决方案。
我在解决方案中有两个项目,其中一个是传统的.net core 2.2 web应用程序,现在我有了一个新的项目,一个也是python。
我还需要将python项目复制到publish文件夹中,以便docker可以将其容器化。 我无法将python项目添加为对c#项目的引用,因为它将返回一个错误:找不到pyproj(我100%相信它是正确的,但我猜它在构建过程中不会复制)
我试图在csproj文件的msbuild中添加一些额外的内容来强制复制它,但我猜它不起作用,因为它不在项目文件夹中,所以不允许这样做。
我试着把这句话添加到csproj中

    <ItemGroup>
        <MySourceFiles Include="..\PYNLP\" />
    </ItemGroup>

还有这个

    <ItemGroup>
        <MySourceFiles Include="$(MSBuildProjectDirectory)\..\PYNLP\" />
    </ItemGroup>

没有一个效果好。如果有人有主意,我很乐意试试。你知道吗


Tags: 项目core文件夹web应用程序netinclude传统
1条回答
网友
1楼 · 发布于 2024-04-19 21:53:28

I tried to add some extra to msbuild in the csproj file to force copy it, but i guess it does not work because it is out of the project folder and it was not allowed. I tried to add this lines to the csproj

列出的代码无效,因为指定的是文件夹而不是文件,并且MySourceFiles必须包含特定的文件。你知道吗

只是一些建议

要实现这一点,必须编写一个自定义目标。你知道吗

首先,请使用像*.*这样的通配符来包含所有文件。文件我认为您使用的核心方法是Copy Task将文件复制到目标文件夹中。并且必须指定目标的运行方式,例如AfterTargets or BeforeTargets。你知道吗

样本

这是一个样本,我已经测试成功,运行没有错误。你知道吗

<Target Name="CopyToPublishFolder" AfterTargets="Build">
    <ItemGroup>
      <PythonFiles Include="..\PYNLP\**\*.*" />        
    </ItemGroup>        
   <Copy SourceFiles="@(PythonFiles)" DestinationFiles="@(PythonFiles->'$(PublishUrl)\PYNLP\%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>

通常当您通过发布UI发布项目时,该过程包含生成目标,并且该目标将通过发布UI自动执行。你知道吗

$(PublishUrl)将文件直接复制到Publish文件夹中。你知道吗

%(RecursiveDir)%(Filename)%(Extension)将保留python项目的文件结构。你知道吗

此外,请将类似“PythonFiles”的Itemgroup放入自定义目标,以防输入文件再次映射到项目,从而在全局定义项时造成混淆。你知道吗

希望对你有帮助。你知道吗

相关问题 更多 >