Visual studio Visual Studio 2017未检测到.cu(CUDA)文件中的更改

Visual studio Visual Studio 2017未检测到.cu(CUDA)文件中的更改,visual-studio,cuda,Visual Studio,Cuda,我已安装Visual Studio 2017和Cuda Toolkit 9.1。它正在工作,我通过构建几个项目来确认它 现在,当我编辑.cu文件并按build时。它说这个项目已经是最新的了。只有在使用“重建”时,才能将更改生成到新的二进制文件中。解决方法是使用build->Compile或Ctrl+F7强制编译而不是生成。 这为我解决了这个问题,但也请注意,我最初尝试了对文件进行构建->运行代码分析(也有效),随后采取了上述解决方法。在NVidia提交错误报告后,他们在下一个工作日解决了问题,承

我已安装Visual Studio 2017和Cuda Toolkit 9.1。它正在工作,我通过构建几个项目来确认它


现在,当我编辑.cu文件并按build时。它说这个项目已经是最新的了。只有在使用“重建”时,才能将更改生成到新的二进制文件中。

解决方法是使用
build->Compile
或Ctrl+F7强制编译而不是生成。

这为我解决了这个问题,但也请注意,我最初尝试了对文件进行
构建->运行代码分析
(也有效),随后采取了上述解决方法。

在NVidia提交错误报告后,他们在下一个工作日解决了问题,承诺在Nsight Visual Studio的下一版本中提供修复。(我目前正在使用CUDA 10.0附带的Nsight Visual Studio 6.0。)


我期待着试用新版本(无论何时发布),他们的响应速度让我惊喜不已。

微软在VS2017中修改了检测源代码更改的方式

一个解决方案是从chrispy81写入的

CUDA 10.0.targets文件中的
:
“C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.0.targets”
“C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 10.0.targets”
“c:\Program Files\NVIDIA GPU计算工具包\CUDA\v10.0\extras\visual studio\U集成\MSBuildExtensions\CUDA 10.0.targets”
在此标签下:
写下:
%(CudaCompile.FullPath)
好消息! 该问题已得到解决,可通过2019年2月发布的CUDA 10.1工具包获得。


抱歉,等待时间太长。

您是否已将相关文件/项目添加到configuration manager?(
build->configurationmanager
)我在使用vs2017、cuda 9.1和工具集v140时遇到了同样的问题。如果你有解决办法,请告诉我。我也有同样的问题
In the CUDA 10.0.targets files:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.0.targets" 
"C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 10.0.targets" 
"c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\visual_studio_integration\MSBuildExtensions\CUDA 10.0.targets" 

under this tag:

<WriteLinesToFile
    Condition="'%(CudaCompile.ExcludedFromBuild)' != 'true'"
    File="%(CudaCompile.DepsOutputPath)"
    Lines="@(_CudaCompileDeps)"
    Overwrite="true" />

write this:

<PropertyGroup>
    <CudaCompileItemFullPath>%(CudaCompile.FullPath)</CudaCompileItemFullPath>
</PropertyGroup>

<GetOutOfDateItems
    Condition ="'$(SelectedFiles)' == ''"
    Sources ="%(CudaCompile.FullPath);
    @(_CudaCompileDeps)"
    OutputsMetadataName ="Outputs"
    DependenciesMetadataName ="AdditionalInputs"
    CommandMetadataName ="Command"
    TLogDirectory ="$(TLogLocation)"
    TLogNamePrefix ="%(CudaCompile.Filename)%(CudaCompile.Extension)$(CudaCompileItemFullPath.GetHashCode())">
    <Output TaskParameter="OutOfDateSources" ItemName="CudaBuildCoreOutOfDateItems"/>
</GetOutOfDateItems>